想建立一個設備數據庫searchpage,我有一份聲明這需要一個設備「標籤」(總是需要),並搜索在六個不同的數據字段的關鍵詞,其中'tag'匹配用戶輸入。結合LIKE並在PHP的MySQLi準備好的語句
的問題是,沒有結果發現如果關鍵字是這些可能是長字段的IN
一個,所以很多預期的結果丟失。
在常規的SQL我只是表加入並添加LIKE
查詢到IN
查詢;但與mysqli我使用?
佔位符的準備聲明,並不確定可以做什麼關於每個變量多次使用此標記。
我必須聲明是這樣的:
if (!($stmt = $conn->prepare("SELECT * FROM equipment
WHERE EQUIP_CND LIKE ?
AND (EQUIP_TYP LIKE ? OR ((EQUIP_SER LIKE ? OR EQUIP_PNO LIKE ?)
OR (EQUIP_LOC LIKE ? OR EQUIP_CMT LIKE ?)));"))) {
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}
而且我想只是LIKE IN
取代LIKE
。如何實現這一目標?
你並不需要所有這些嵌套的括號。只是'AND(x像?或y像?或z像...?)' – Barmar
你是什麼意思「如果關鍵字是在這些長字段之一」?它們是逗號分隔的列表嗎? – Barmar
爲什麼你認爲你不能在準備好的聲明中做一個'JOIN'? – Barmar