我在php中使用PDO。但是,當我的查詢有任何關鍵字像「'」意味着連字符它打破並通過一個錯誤。 我準備通過互聯網,並找到解決方案綁定與查詢參數,它工作正常。 但問題是我在循環中構建查詢,我無法在循環內綁定參數。 這是代碼,我用空間拆分數組,並對每個關鍵字運行查詢。 前3個單詞將只有像查詢和更多然後3個單詞我正在使用循環來連接所有數組元素和相同的多於6個單詞我正在使用MATCH查詢。 有沒有什麼辦法來逃避這個連字符,或者我們如何在我的情況下使用循環綁定參數?在PHP中使用PDO綁定參數
$keyword = ($_POST['keyword']);
$keyword_array = split(' ',$keyword);
/* Query For first Three Words */
if(count($keyword_array)<=3){
$sql = "SELECT * FROM faq WHERE question LIKE '%$keyword%' limit 14";
}
/* Query through all array when words are greater then 3 */
if(count($keyword_array)< 6){
$sql = "SELECT * FROM faq WHERE question ";
for($i = 0 ; $i<count($keyword_array); $i++){
if($i==0){
$sql.=" LIKE '%$keyword_array[$i]%'";
}else{
$sql.=" or question LIKE '%$keyword_array[$i]%' ";
}
}
$sql .= " ORDER BY question ASC LIMIT 0, 8";
}
/* Appl FULL TEXT in natual language mode once we have enough phrase */
else if(count($keyword_array)>=6){
$sql = "SELECT * FROM faq WHERE ";
for($i = 0 ; $i<count($keyword_array); $i++){
if($i==0){
$sql.=" MATCH (answer) AGAINST ('$keyword_array[$i]' in natural language mode) ";
}else{
$sql.=" or MATCH(answer) AGAINST('$keyword_array[$i]' in natural language mode) ";
}
}
$sql .= " limit 0,5";
}
$execute_faq_query = $conn->query($sql);
$execute_faq_query->setFetchMode(PDO::FETCH_ASSOC);
while ($list = $execute_faq_query->fetch()){
}
循環應構建SQL語句,然後執行單個SQL查詢。 –
是的,我確實嘗試過,但我有問題,因爲我是新的PDO,你可以請任何循環的幫助,然後我會用在所有其他。 – Bilal
PDO支持像':keyword'這樣的命名佔位符,然後您可以在'execute(array(':keyword'=> $ keyword))''中引用''。把東西添加到字符串很容易,如果你同時向你的數組添加東西,它們將保持同步。 – tadman