如何匹配select查询中的字符串数组?

时间:2016-10-01 13:34:30

标签: php mysql sql arrays

我在php工作,这是我的数组

数组([0] =>夏普[1] =>新[2] =>压力[3] =>向前弯曲[4] =>头痛)

我想检索与标记列

中的数组值匹配的记录
select * 
from table_name 
where tag In(Sharp, New,Stress,Bending forward,Headache);

但是上面的查询在php端给出了错误,就像

一样
  

警告:mysql_fetch_array()要求参数1为资源,字符串在第14行的C:\ xampp \ htdocs \ Demo \ abc.php中给出

而mysql方面是

  

1064 - 您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以便在第1行的“forward,Headache”LIMIT 0,25'附近使用正确的语法

提前谢谢

1 个答案:

答案 0 :(得分:0)

您缺少字符串值的引号。

此:

SELECT * FROM table_name WHERE tag IN (Sharp,New,Stress,Bending forward,Headache)

应该是:

SELECT * FROM table_name WHERE tag IN ('Sharp','New', 'Stress','Bending forward','Headache')

如果你有一个阵列,你可以使用implode()

$string = implode('","',$yourArray);

$query = 'SELECT * FROM table_name WHERE tag IN ("'.$string.'")';

还有一点,根据您的代码错误,您使用的是mysql_*扩展程序,该扩展程序在PHP 7中已弃用并已关闭。您可以使用mysqli_*PDO