0

数据库表:

编号| p1 | p2 | 笔记
1 | 1 | 一个 | 猫、老鼠、狗
2 | 1 | 一个 | 猫、马、狗

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

$exclusions = 数组(“鼠标”);
if($row['p1'] == 1 && $row['p2'] == "a" && $row['notes'] 不像 '%mouse%') {...}

谢谢你。

4

2 回答 2

1

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

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

上面写着“如果 $row['notes'] 中没有出现“鼠标””

这 !如果没有发生,将使其返回 true。

于 2012-05-13T17:12:28.053 回答
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 风格

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

 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;";
于 2012-05-13T17:12:12.787 回答