2014-09-06 46 views
0

现在我想在我的表中使用两列。PDO对单个字符串的多个表列使用LIKE查询

表名= roomnames

表列= roomIDroomNameroomNo

我有,它发送在其上的查询应该执行一个字符串值的输入栏。这里下面

是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.'%')); 

我想如果我搜索房间里没有或ROOMNAME,它会告诉我的结果,如果该房间号或房间名称存在于数据库中的表。

对不起,我的英语不好。我希望我解释过。 我想要在多列中搜索输入字符串的表,输入字符串可以是否或名称。 数字是房间号和房间名称的名称。

回答

4

你得对每个参数的值,所以值的数组的参数加倍您的searchfilter:

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

Thankyou,它的工作。 – 2014-09-06 15:16:36

1

你可以从你的MySQL使用MATCH结构:

SELECT roomName, roomNo FROM roomnames WHERE MATCH (roomName, roomNo IN BOOLEAN MODE) AGAINST(?) 
然后

内部AGAINST(?)所需的PARAMS会去内部$stmt->execute(...)

阵列有关的进一步信息,请参阅here

Restrictions

全文索引只能MyISAM表使用。 (在MySQL 5.6 及更高版本中,它们也可以与InnoDB表一起使用。)仅可为CHAR,VARCHAR或TEXT列创建全文索引 。

docs

只从字搜索的IN BOOLEAN MODE阻止,但 字符串。

+0

问题用@VMai查询解决, 但我也试过了你的查询和它的不工作。 – 2014-09-06 15:23:41

+0

'$ stmt = $ conn-> prepare(“SELECT roomName,roomNo FROM roomnames WHERE MATCH(?,?)AGAINST('houserentsystem')”); $ stmt-> execute(array('%'。$ searchFilter。'%','%'。$ searchFilter。'%'));'不工作。 – 2014-09-06 15:25:28

+0

@SizzlingCode Sry听到了,我编辑了我的答案。这完全是关于查询,而不是PDO,很高兴听到一个答案帮助你。而你的标题说“多个表”,这就是为什么我把“匹配”的东西...... – 2014-09-06 15:26:12