2014-09-06 44 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