使用通配符,以便匹配所有记录。
我的代码:
if(empty($tag))
{
$tag="%";
}
mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error());
但它返回零结果。 即使
if(empty($tag))
{
$tag="*";
}
它仍然返回零结果。如何解决这个问题?
答案 0 :(得分:1)
INSTR
不支持通配符。
如果要在MySQL查询中使用通配符,则必须使用支持它的函数,例如LIKE或REGEXP,即:
mysql_query("select * from mytable where tag LIKE '%$tag%'")
上述查询适用于$tag
的任何值。空值(空字符串)将返回所有记录。请务必正确清理$tag
值。
答案 1 :(得分: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());