数据库表:
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%') {...}
谢谢。
答案 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;";