如何合并select from where中的多个like值?

mumubangditu 2010-10-14 09:31:32
RT。我有10多个 like 'name数字' ,不想每次都重复OR name like,有没有方法,可以把他们合并在一起,类似于
$result=mysql_query("SELECT* FROM table WHERE name like (name1, name2, name3, name4... ...) );(当然这个代码肯定是错的,只是打个比方)
...全文
1163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2010-10-15
  • 打赏
  • 举报
回复
$sql = implode( ' OR name like ', $whereLike ); 这个是没加引号

大概如下
$sql = '"'.implode( '" OR name like "', $whereLike ).'"';
helloyou0 2010-10-15
  • 打赏
  • 举报
回复
rlike是可以用正则的

比如你那个 rlike 'name[1-4]'
mumubangditu 2010-10-15
  • 打赏
  • 举报
回复
不能使用rlike,rlike相当于like '%name%',而我要的是like 'name'。

我已经找到结果了,下面的代码可以实现我要的效果。
$result=mysql_query("SELECT* FROM table WHERE name IN ('name1', 'name2', 'name3', 'name4')" );

我还想到另外一个思路,是否先把所有要查询的name赋予一个函数,然后用implode爆破?
但是输出代码报错 :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

大家来讨论一下,如何修改,使下列代码也成立?

<?
$whereLike = array( 'name1', 'name2', 'name3', 'name4' );
$sql = 'SELECT * FROM table WHERE name like ';
$sql = implode( ' OR name like ', $whereLike );
$result = mysql_query( $sql );
while($row =mysql_fetch_array($result))
{
echo $row['name'];
}
?>
mumubangditu 2010-10-15
  • 打赏
  • 举报
回复
非常感谢helloyou0,分先给你了。
但是 $sql = implode( ' OR name like ', $whereLike ); 加了引号还是提示错误……
helloyou0 2010-10-15
  • 打赏
  • 举报
回复
取决于你的具体语句

看看rlike能否用

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧