0

使用通配符,以便匹配所有记录。

我的代码:

if(empty($tag))
{
$tag="%";
}

mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error());

但它返回零结果。即使

 if(empty($tag))
    {
    $tag="*";
    }

它仍然返回零结果。如何解决这个问题?

4

2 回答 2

1

INSTR不支持通配符。

如果要在 MySQL 查询中使用通配符,则必须使用支持它的函数,例如LIKEREGEXP,即:

mysql_query("select * from mytable where tag LIKE '%$tag%'")

上面的查询将适用于任何值$tag。空值(空字符串)将返回所有记录。确保你也正确地清理了你的$tag价值。

于 2009-12-15T05:13:58.867 回答
0

首先,instr(及其对应物locate)不识别通配符或任何其他特殊表达式——仅识别文字字符串。处理此问题的常用方法是相应地修改 SQL:

if (empty($tag))
     $whereclause = "";  // match all records
else $whereclause = "where instr(tag, '$tag') > 0";

mysql_query("select * from mytable $whereclause") or die(mysql_error());
于 2009-12-15T05:09:26.963 回答