Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql,其中包含多个值_Php_Mysql_Where - Fatal编程技术网

Php mysql,其中包含多个值

Php mysql,其中包含多个值,php,mysql,where,Php,Mysql,Where,使用Select查询中的WHERE时出现问题。 DB表包含一个存储数据的字段,该字段用逗号分隔,如“1,2,3”。 我不知道如何检查字段是否包含1、2或3。通常的疑问是 从“$table.”中选择*,其中名称=“$val.”。 当然,这只会找到等于$val的条目,所以如果我搜索“1”,它只会给我包含“1”的条目,而不是“1,2,3”或“1,2”。有办法吗 谢谢大家您应该修复数据结构。有很多很好的理由可以避免将数字列表存储为字符串: 值应存储为其正确的数据类型。数字不是字符串 SQL的字符串处理

使用Select查询中的WHERE时出现问题。 DB表包含一个存储数据的字段,该字段用逗号分隔,如“1,2,3”。 我不知道如何检查字段是否包含1、2或3。通常的疑问是 从“$table.”中选择*,其中名称=“$val.”。 当然,这只会找到等于$val的条目,所以如果我搜索“1”,它只会给我包含“1”的条目,而不是“1,2,3”或“1,2”。有办法吗


谢谢大家

您应该修复数据结构。有很多很好的理由可以避免将数字列表存储为字符串:

  • 值应存储为其正确的数据类型。数字不是字符串
  • SQL的字符串处理功能非常差
  • SQL具有这种用于存储列表的优秀数据结构。它叫桌子
  • 如果这些数字引用了另一个表,则无法声明正确的外键关系
有时,我们会被其他人糟糕的设计决策所困扰。在这些情况下,MySQL提供:

警告:这有一些严重问题,因为用户数据在查询中使用。尽可能使用事先准备好的陈述。在任何用户提供的数据都指定有
:name
指示符的情况下,这些操作非常简单,稍后将根据您使用的是哪个指示符,使用
绑定参数或
执行
填充指示符。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中。
where find_in_set(1, name) > 0