0
我在執行fulltext()
搜索我的查詢時遇到了一些困難。現在,AGAINST()
段中的參數不會引發錯誤 - 除非它們被包裝在單引號中。PDO:綁定值包裝在MATCH()查詢的單引號中()查詢
錯誤:PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
這是有道理的,因爲他們不應該是文字,相反,他們應該是字符串,所以值不被約束,對不對?但爲了使此查詢起作用,AGAINST()
中的參數必須用單引號括起來。
MATCH(features) AGAINST(':feature_set :feature_unset')
$bind_array[":feature_set"] = $feature_set;
$bind_array[":feature_unset"] = $feature_unset;
$stmt = $conn->prepare($query);
$stmt->execute($bind_array);
:feature_set :feature_unset
將返回格式化像這樣的字符串:
+ Softaculous - 免費域名-Site生成器-Fantastico
有誰知道的解決方案?非常感謝,謝謝!
嗨,謝謝你的回答。我不能實現這一點,因爲查詢除了'match()'之外還有許多其他參數,並且在滿足每個條件時緩慢建立'$ bind_array'。你介意解釋你的答案,爲什麼它會工作,它可以解決這個問題。再次感謝:) –
'AGAINST'期望唯一的字符串表達式。因此,你必須有一個綁定參數,並且不應該在佔位符周圍使用引號。查看更新的答案。 – peterm
謝謝,這是一種享受。作爲一個參考,我想我應該補充說我還找到了另一個解決方案。解決方案是將單引號連接到變量本身。總的來說,@peterm的答案提供了一個更清晰的解決方案,所以我就這樣做了。 –