我正在尝试使用以下代码执行mysqli查询:
$sql = "SELECT * FROM `table` WHERE `description` LIKE ('AB CD %')";
$result= mysqli_query($con, $sql) or die(mysqli_error());
,此查询给了我6条结果。它只会查找“ AB CD EF ...”之类的项目,而不会查找“ AB CDEF ...”之类的项目,这正是我想要的。 但是,如果我给LIKE值一个像这样的变量:
$var = "AB CD ";
$sql = "SELECT * FROM `table` WHERE `description` LIKE ('$var%')";
$result= mysqli_query($con, $sql) or die(mysqli_error());
它给我零结果。
我也尝试了几种类似...('".$var."%')";
或CONCAT($var, '%')
的LIKE格式,但是什么也没有。
如何在第二个查询中使用变量来获得与第一个查询相同的结果?
通过查询获取变量,该查询将选择所有description
个项目,然后在while循环内,它将查找每个项目的首个大写字母:
$name = $row['description'];
$expr = '/[A-Z]*/';
preg_match_all($expr, $name, $res);
$var = implode(' ', $res[0]);
每行的值均类似于“ AB CD EF以外的其他非大写字母”
谢谢。
答案 0 :(得分:1)
用大括号{}
包装变量后如何处理?另外,我在 Like :)
()
$var = "AB CD ";
$sql = "SELECT * FROM `table` WHERE `description` LIKE '{$var}%'";
答案 1 :(得分:0)
好吧,user3783243发现了问题。 当我使数组内爆以获得$ var字符串时,由于某种原因我无法解释,其中包括了没有值的数组元素(很多)。解决的办法是分解$ var,使其通过array_filter函数,删除空元素,然后再次将其内爆。 谢谢大家。
答案 2 :(得分:-1)
使用:
$var = "AB CD ";
$sql = "SELECT * FROM `table` WHERE `description` LIKE '".$var."%'";
但这是一种不好的做法,同时也很容易受到攻击,请改用准备好的语句:http://php.net/manual/en/book.pdo.php