mysql-从数组中查找字符串
数据库表: id| p1 | p2 | notes 1 | 1 | a | cat, mouse, dog 2 | 1 | a | cat, horse, dog 我现在需要运行一个查询,选择notes不包含$Exclutions数组中定义的字符串的行。我尝试了类似“%mouse%”的运算符,但出现了一个错误 $exclusions = array ("mouse"); if($row['p1'] == 1 && $row['p2'] == "a" && $row['notes'] not like '%mouse%') {...} 多谢各位mysql-从数组中查找字符串,mysql,arrays,sql-like,Mysql,Arrays,Sql Like,数据库表: id| p1 | p2 | notes 1 | 1 | a | cat, mouse, dog 2 | 1 | a | cat, horse, dog 我现在需要运行一个查询,选择notes不包含$Exclutions数组中定义的字符串的行。我尝试了类似“%mouse%”的运算符,但出现了一个错误 $exclusions = array ("mouse"); if($row['p1'] == 1 && $row['p2'] == "a" && $row['notes'] no
if($row['p1'] == 1 && $row['p2'] == "a" && $row['notes'] not like '%mouse%') {...}
这不是MySQL语法。它看起来像PHP,在PHP中不能使用like。尝试使用字符串比较运算符,如strstr
Mysql风格
不使用鼠标获取所有行的查询可以是:
或者从php数组中获取排除项:
$condition=WHERE;
$first=true;
foreach$除外责任作为$ex{
如果!$first$条件。=和;//或使用或
$condition.=`notes`不像\%$ex%\;
$first=false;
}
$complete_query=从`tablename`$condition;中选择*;;
看起来您是在混合使用PHP代码和sql执行逻辑。要在php中实现这一点,您可以
!strstr($row['notes'], 'mouse')
也就是说,如果$row['notes'中没有出现鼠标
这个!如果没有出现,将使其返回true。如果没有更多的参考,很难确定语法问题可能是什么…例如,我看不到WHERE…is there and missing,或or?不像“%mouse%”是正确的语法,所以在SQL语句的其余部分中使用它肯定是错误的。我猜OP希望在PHP代码中完成逻辑。因此SQL语句很可能是select*from表;现在还不清楚他们是想通过sql命令还是php代码来解决问题。谢谢-这很有效!如果要排除多个字符串,我如何修改此项?抱歉,由于出现错误,我需要删除最后一条注释。最好在纸上写下您希望代码如何运行的逻辑,这样您就不会被NOT、and和OR混在一起。例如,您不希望任何包含鼠标或狗的结果看起来像:!strstr$行['notes'],'mouse'| | |!strstr$row['notes'],'dog'的字面意思是:没有老鼠或狗出现。。。。您也可以在不使用NOT操作数的情况下编写代码-strstr$row['notes'],'mouse'-这意味着,如果notes包含鼠标。。。实际上,-| |操作数似乎不起作用,而一个接一个地堆叠&&
!strstr($row['notes'], 'mouse')