我现在想在我的表中的两列上使用 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/