mysql - 从数组中查找字符串

时间:2012-05-13 17:08:47

标签: mysql arrays sql-like

数据库表:

id| p1 | p2 | notes
1 | 1  | a  | cat, mouse, dog
2 | 1  | a  | cat, horse, dog

我现在需要运行一个查询,选择“notes”不包含$ exclusions数组中定义的字符串的行。我尝试了LIKE'%mouse%'运算符,但是出错了。

$exclusions = array ("mouse");
if($row['p1'] == 1 && $row['p2'] == "a" && $row['notes'] not like '%mouse%') {...}

谢谢。

2 个答案:

答案 0 :(得分:1)

看起来你正在混合使用PHP代码和sql。要在php中执行此操作,您可以

!strstr($row['notes'], 'mouse')

那说“如果$ row ['notes']”

中没有出现“mouse”

!如果没有发生,它将返回true。

答案 1 :(得分:0)

if($row['p1'] == 1 && $row['p2'] == "a" && $row['notes'] not like '%mouse%') {...}

这不是MySQL语法。它看起来像PHP,在PHP中你不能使用LIKE。尝试像strstr这样的字符串比较运算符。 http://php.net/manual/en/function.strstr.php

Mysql Style

获取没有鼠标的所有行的查询可能是这样的:

 SELECT * FROM `tablename` 
 WHERE `notes` NOT LIKE '%mouse%';

或者从php数组中获取排除项:

 $condition = "WHERE ";
 $first = true;
 foreach($exclusions as $ex) {
      if(!$first) $condition .= " AND "; // or use OR
      $condition .= "`notes` NOT LIKE \"%$ex%\"";
      $first = false;
 }

 $complete_query = "SELECT * FROM `tablename` $condition;";