我需要使用数组列表进行SELECT。$array_name
包含:
Array ( [0] => gum.cn [1] => lol.com. [2] => ns1.blar.com [3] => test.com [4] => web.cn. )
打印r($数组名称);
$string = implode(',',$array_name);
$tank = "SELECT url FROM `PHP`.`db` WHERE url LIKE '%{$string}%'";
$result1 = mysql_query($tank);
while ($jwp = mysql_fetch_array($result1))
{
echo $jwp['url'];
echo "<br>";
}
为什么上面的方法不起作用呢?我搜索了其他的例子,这个问题是问没有使用LIKE
子句,所以没有解决方案。请帮助,提前感谢。
7条答案
按热度按时间5lhxktic1#
它不起作用,因为您的查询将扩展为:
您必须稍微修改一下查询:
8zzbczxx2#
/* 数组数据 */
/* 用分隔符(空格)将数组元素联接成字符串““*/
/* 将分隔符(空格)““替换为“%”或“%”*/
/* 插入查询sql */
“%$字符串%”
“;
6pp0gazn3#
它不会工作,因为它会尝试将数据库值(例如)“gum.cn”与“%gum.cn,lol.com,..... %”匹配,但这永远不会为真。
不如这样做:
希望能有所帮助。
ttp71kqs4#
使用IN子句,但要确保值用引号括起来并进行转义:
mdfafbf15#
因为它生成无效的SQL(好吧,从技术上讲是有效的,它只是不会做你认为它会做的事情)
你可能需要追加多个LIKE语句,除非你要做一个精确的字符串匹配查询,否则内插不适用于这个任务,即使这样你也需要调整代码。
kmbjn2e36#
/**内爆多维值数组,当与“[]”块不同时对字符进行分组。 @param array $array要内爆的数组 * @return string已内爆的数组 */ function hoArray 2SqlLike($array){ if(!is_array($array))return $array;
}
mjqavswn7#
我知道这个问题是老问题,但我希望这可能对其他人有用。
我们可以使用
REGEXP
而不是LIKE
,例如: