PHP、MySQL : mysql substitute for php in_array function

标签 php mysql search

假设我有一个数组并且我想检查某个元素是否是该数组的一部分,我可以继续使用 in_array(needle, haystack) 来确定结果。为了我的目的,我正在尝试查看与此等效的 PHP。现在你可能对我有一个即时的答案,你可能会想说“使用 IN”。是的,我可以使用 IN,但这并不能获取所需的结果。让我用一个例子来解释:

我在数据库表中有一个名为“宠物”的列。对于记录,它有一个值:Cat, dog, Camel (是的,列数据是逗号分隔值)。假设这一行的 id 为 1。

现在我有一个表单,我可以在其中输入表单输入中的值,并使用该值检查数据库中的值。假设我在表单输入中输入以下逗号分隔值:CAT, camel (是的,CAT 是大写的,而且是有意为之,因为有些用户倾向于这样输入)。

现在,当我在表单输入中输入上述信息并提交时,我可以收集发布的信息并使用以下查询:

$search = $_POST['pets'];
$sql = "SELECT id FROM table WHERE pets IN ('$search') "; 
  1. 上面的查询没有获取数据库中已经存在的行(还记得宠物列的值是 Cat, dog, Camel 的记录吗?)。我正在尝试让记录充当超集,并将表单输入中的值作为子集。所以在这种情况下,我希望 id 值显示为列中存在的值,但这并没有发生。

  2. 现在假设我只输入 CAT 作为表单输入并执行搜索,它应该会显示 ID 1 行。

  3. 现在假设我只输入 camel, cAT 作为表单输入并执行搜索,它应该会显示 ID 1 行。

我怎样才能实现上述目标?

谢谢。

最佳答案

您要找的函数是find_in_set :

 select * from ... where find_in_set($word, pets)

对于多词查询,您需要测试每个词和 AND(或 OR)测试:

  where find_in_set($word1, pets) AND find_in_set($word2, pets) etc 

关于PHP、MySQL : mysql substitute for php in_array function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981280/

相关文章:

php - MySQL 函数在 "php:7.1"docker 镜像中不可用

mysql - 如何在sequelize (Node.js) 中的应用程序启动时保存多个值

c++ - 最好的字符串搜索算法

php - 我的 PHP 类有问题

javascript - PHP MySQL 插入数据库

search - 选择不扩展节点还是不将其添加到 A* 中具有探索的封闭集的队列中,这重要吗? (图搜索)

search - RavenDB 全文搜索

php - 在 magento 管理模块中使用 Controller 和模型提交表单值

javascript - 使用 AngularJS 和 php 将数据从表单保存到数据库

php - array_flip 以逗号分隔格式打印重复值