php - PDO 对单个字符串的多个表列运行 LIKE 查询

标签 php mysql pdo

我现在想在我的表中的两列上使用 like。

tablename = roomnames

表格列 = roomID, roomName, roomNo

我有一个输入字段,它发送一个应该执行查询的字符串值。

下面是PHP PDO代码

<?php
/**
 * Created by PhpStorm.
 * User: HaiderHassan
 * Date: 9/3/14
 * Time: 9:52 PM
 */
header('Access-Control-Allow-Origin: *');
try {
    $conn = new PDO('mysql:host=localhost;dbname=houserentsystem;charset=utf8', 'root', 'admin');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}
if($_POST['searchFilter']){
    $searchFilter = $_POST['searchFilter'];
    $stmt = $conn->prepare("SELECT roomName, roomNo FROM roomnames WHERE roomName LIKE ? OR roomNo LIKE ?");
    $stmt->execute(array('%'.$searchFilter.'%'));
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $stmt->closeCursor();
    print_r(json_encode($results));
}

我尝试的查询是错误的,我现在尝试的是这里不工作。

$stmt = $conn->prepare("SELECT roomName, roomNo FROM roomnames WHERE roomName LIKE ? OR roomNo LIKE ?");
$stmt->execute(array('%'.$searchFilter.'%'));

我想如果我搜索房间号或房间名,如果房间号或房间名存在于数据库表中,它会显示结果。

抱歉我的英语不好。我希望我已经解释过了。 我想在多列中针对输入字符串搜索表,输入字符串可以是 no 或 name。 Number 代表 roomNo,name 代表房间名称。

最佳答案

您必须为每个参数设置一个值,因此在参数值数组中将搜索过滤器加倍:

$stmt = $conn->prepare("SELECT roomName, roomNo FROM roomnames WHERE roomName LIKE ? OR roomNo LIKE ?");
$stmt->execute(array('%'.$searchFilter.'%','%'.$searchFilter.'%' ));

关于php - PDO 对单个字符串的多个表列运行 LIKE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701631/

相关文章:

mysql - PHPUnit/DbUnit "Too many connections"

php - 关闭php中的包含文件

php - 统计一个表中分层数据的所有子节点

java - 使用 hibernate 时出现 SQL 语法错误

php - 如何使用带有 foreach 循环的一个查询将数据插入到多列中?

MySQL/PDO 截断数据

javascript - 更改日期 onchange 或 onblur

php - 单击表单标签聚焦到错误的输入框

php - 如何存储评级系统的 ID?

mysql - 我怎样才能得到他年级中最大年龄的名字