LIKE运算符和NOT IN的正确用法

时间:2012-06-30 00:38:55

标签: php mysql field sql-like

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

目前有效......

$resultInput = mysql_query("SHOW COLUMNS FROM " . $table. " WHERE Field NOT IN ('id', 'created', 'date_modified', 'content', 'type', 'bodytext', 'project_content', 'content_short') AND Field NOT LIKE '%_image%'");

但是我想删除名称内容的所有字段,并将其添加到LIKE函数中,例如%content%

$resultInput = mysql_query("SHOW COLUMNS FROM " . $table. " WHERE Field NOT IN ('id', 'created', 'date_modified', 'type', 'bodytext') AND Field NOT LIKE ('%_image%', %content%)");

但这似乎不起作用?并返回“

  

警告:mysql_num_rows()期望参数1为资源,bo中给出布尔值           第33行的C:\ xampp \ htdocs \ framework.php

1 个答案:

答案 0 :(得分:3)

您正在尝试的实际上是语法错误。 LIKE条件必须单独列出,并由ANDOR分隔。但是,在您的情况下,您可以通过将条件与|

分开来with REGEXP
SHOW COLUMNS 
FROM " . $table. " 
WHERE Field NOT IN ('id', 'created', 'date_modified', 'type', 'bodytext') 
AND Field NOT REGEXP '_image|content'

因为正则表达式将匹配content内的_imageField 模式模式,所以%不需要任何其他等效字符1}} LIKE中使用的通配符。

为了安全起见,我们假设已将$table与要在此查询中使用的有效表名列表进行比较。

最后,您收到了致命错误 mysql_num_rows()期望参数1为资源,因为您没有对查询结果执行错误检查。

$result_input = mysql_query("SHOW COLUMNS.....");
if (!$result_input) {
  // Something's wrong
  echo mysql_error();
}
else {
  // ok, everything is working, proceed.
}