2016-09-29 123 views
0

我有一個sql請求來處理php數組,以查找搜索欄的所有出現。將行與數組中的元素進行匹配

我無法完成這件事。這是我的代碼:

$texte = $_POST['texte']; 
    $texte = explode(" ", $texte); 
    $query_parts = array(); 

    //Proximité 
    foreach ($texte as $value) { 
     $value = "%".$value."%"; 
    } 



    $sql = "SELECT * FROM PROXIMITE WHERE titrefr LIKE ':texte'"; 
    $req = $bd->requete_obj($sql, array('texte'=>$texte)); 

    while($select = $req->fetch()){ 
     error_log('Test'); 
    } 
+0

request_obj而不是requete_obj – scaisEdge

+0

我是法國人,這是我做了一個數據庫類。 –

+0

由於您使用的是佔位符,因此您不希望放置佔位符本身以外的任何其他位置。這是刪除單引號:'''。由於您使用的是PDO,據推測,這會處理您的報價。 – tadman

回答

1

你的foreach循環實際上並沒有修改的變量,因爲它們是按值傳遞 - 這意味着一個副本。 修改它們,你必須按引用傳遞它們:

foreach ($texte as &$value) { 
    $value = "%".$value."%"; 
} 

這樣一來,你的數組中的實際值是被操縱。

其次:你不能給你的數據庫一個數組作爲參數。相反,你可以遍歷數組。如果您實現您的第一個循環,你甚至不必再使用引用:

$sql = "SELECT * FROM PROXIMITE WHERE titrefr LIKE :texte"; 
foreach ($texte as $value) { 
    $value = "%".$value."%"; 
    $req = $bd->requete_obj($sql, array('texte'=>$value)); 
    while($select = $req->fetch()){ 
     error_log('Test'); 
    } 
} 
+0

PHP注意:數組到字符串的轉換 –

+0

謝謝! :)) –

+1

不用客氣 - 但你應該考慮重構你的數據流。對每個單詞運行一個查詢並不完全有效。 –

相關問題