Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
使用通配符,以便匹配所有记录。
我的代码:
if(empty($tag)) { $tag="%"; } mysql_query("select * from mytable where instr(tag,'$tag')>0") or die(mysql_error());
但它返回零结果。即使
if(empty($tag)) { $tag="*"; }
它仍然返回零结果。如何解决这个问题?
INSTR不支持通配符。
INSTR
如果要在 MySQL 查询中使用通配符,则必须使用支持它的函数,例如LIKE或REGEXP,即:
mysql_query("select * from mytable where tag LIKE '%$tag%'")
上面的查询将适用于任何值$tag。空值(空字符串)将返回所有记录。确保你也正确地清理了你的$tag价值。
$tag
首先,instr(及其对应物locate)不识别通配符或任何其他特殊表达式——仅识别文字字符串。处理此问题的常用方法是相应地修改 SQL:
instr
locate
if (empty($tag)) $whereclause = ""; // match all records else $whereclause = "where instr(tag, '$tag') > 0"; mysql_query("select * from mytable $whereclause") or die(mysql_error());