我想在我的表格中使用两列。
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。 号码是roomNo和房间名称的名称。
答案 0 :(得分:4)
你必须为每个参数都有一个值,所以在参数值的数组中加倍你的searchfilter:
$stmt = $conn->prepare("SELECT roomName, roomNo FROM roomnames WHERE roomName LIKE ? OR roomNo LIKE ?");
$stmt->execute(array('%'.$searchFilter.'%','%'.$searchFilter.'%' ));
答案 1 :(得分:1)
您可以使用MySQL的MATCH
结构:
SELECT roomName, roomNo FROM roomnames WHERE MATCH (roomName, roomNo IN BOOLEAN MODE) AGAINST(?)
AGAINST(?)
内所需的参数将作为$stmt->execute(...)
有关详细信息,请参阅here。
全文索引只能用于MyISAM表。 (在MySQL 5.6中 并且,它们也可以与InnoDB表一起使用。)全文索引 只能为CHAR,VARCHAR或TEXT列创建。
来自docs:
IN BOOLEAN MODE
阻止仅按字词搜索,而是依据 字符串。