我正在改進項目後臺中的搜索欄。
我想打一個研究在protfolio
表,加入category
表以包括類的名字在可用關鍵字。看起來很簡單,但我會得到的唯一信息是:PHP SQL - 左加入+其中+或
警告: 'where子句' 中 1054未知列 'search_0':PDOStatement對象::執行():SQLSTATE [42S22]:列未找到[...]
我創建的SQL查詢動態執行它,就像在此之前:
$keywords = explode(" ", $_POST['search']);
$query = "SELECT * FROM portfolio LEFT JOIN category
ON portfolio.portfolio_category_id = category.category_id
WHERE ";
$query_array = array();
for ($i = 0; $i < count($keywords); $i += 1) {
$query .= "portfolio.portfolio_title LIKE :search_" . $i;
$query .= " OR category.category_name LIKE search_" . $i;
if ($i != (count($keywords) - 1)) {
$query .= " OR ";
}
$query_array['search_' . $i] = "%" . $keywords[$i] . "%";
}
$list_portf = $bdd->prepare($query);
$list_portf->execute($query_array);
我不是在SQL裂紋我真的不明白的地方是錯誤(我在我發現的問題中沒有找到答案)。謝謝。
你能'執行查詢前回聲$ query_array'?這應該有助於我們找到錯誤 – KuKeC
@KuKeC我錯過了一個冒號(我得到的答案是正確的)。對不起! 我正在結束這個問題 – AymDev
我覺得我必須注意,用戶的搜索詞永遠不應該直接插入SQL查詢中,而不需要過濾。這是一個SQL注入漏洞的定義。也許看到:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – pseudocoder