[英]Creating a MYSQL query from results of splitting a string and using LIKE to match keywords in PHP
我正在嘗試將一個字符串拆分為一個數組並將它們用作關鍵字來進行 sql 查詢。 我制作了一個拆分數組和構建 sql 查詢的示例。 它有點工作,但它給出了每個表作為結果,但是當我硬拷貝構建的查詢時,它會得到預期的結果。
這是我到目前為止所擁有的 -
將關鍵字字符串拆分為數組並構建查詢。
數據庫稱為“clients_personal”,表稱為“likes”
$my_search = "paper, glue, discount, bulk";
$new_search = preg_split("/,/", $my_search);
$mmsql = "SELECT * FROM clients_personal WHERE likes LIKE '%offers%'";
foreach ($new_search as $value) {
$mmsql = $mmsql." OR likes LIKE '%$value%'";
}
不,結果如下:
$mmsql="SELECT * FROM clients_personal WHERE likes LIKE '%offers%' OR likes LIKE '%paper%' OR likes LIKE '%glue%' OR likes LIKE '%discount%' OR likes LIKE '%bulk%'";
現在,如果我這樣搜索,我會得到數據庫中的所有行嗎?
$sql = "$mmsql";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$id=$row["id"];
echo $id;
}
}
但是,如果我的查詢是硬編碼的,它會給出預測的結果嗎?
$sql = "SELECT * FROM clients_personal WHERE likes LIKE '%offers%' OR likes LIKE '%paper%' OR likes LIKE '%glue%' OR likes LIKE '%discount%' OR likes LIKE '%bulk%'";
$result = $conn->query($sql);
我感覺它與引號有關,我嘗試刪除它們但沒有用? 有什么建議嗎? 我也使用這種類型的搜索,因為我在這里找到了它。
問題在這里$new_search = preg_split("/,/", $my_search);
使用$new_search = preg_split("/, /", $my_search);
反而。
字符串中的項目由逗號和空格 (", ") 分隔,因此您應該用它分割字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.