【发布时间】:2022-01-31 17:13:40
【问题描述】:
我正在尝试将一个字符串拆分为一个数组,并将它们用作关键字来进行 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);
我感觉它与引号有关,我尝试删除它们但没有用?有什么建议吗? 我也使用这种类型的搜索,因为我在这里找到了它。
【问题讨论】:
-
可能是你自己比较两个字符串来发现差异
-
我做到了?我已经回应了,我不是要求任何人为我做这件事,只是如果完全做错了!
-
in mmsql
% glue%(带空格)等 -
在循环中尝试
trim($value),然后再将其添加到字符串中。 -
我在任何地方都看不到任何空格?
标签: php mysql arrays search mariadb