【问题标题】:Creating a MYSQL query from results of splitting a string and using LIKE to match keywords in PHP从拆分字符串的结果创建 MYSQL 查询并使用 LIKE 匹配 PHP 中的关键字
【发布时间】: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


【解决方案1】:

问题出在$new_search = preg_split("/,/", $my_search); 改用$new_search = preg_split("/, /", $my_search);

字符串中的项目由逗号和空格(“,”)分隔,所以你应该用它来分割字符串。

【讨论】:

  • 你干杯,你的一切都正确,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多