我有一个要执行的语句来查找包含字符串的列是否包含某个值。
+----+------+
| id | st |
+----+------+
| 0 | 2183 |
| 1 | 5820 |
| 2 | 2984 |
| ...| ... |
+----+------+
假设我希望找到
st
包含1的所有行,我将使用以下where条件:WHERE st LIKE "%1%"
OR st LIKE "1%"
OR st LIKE "1"
OR st LIKE "%1"
但在一份事先准备好的声明中,我该怎么做呢?
$ps = $db->prepare("
SELECT id
FROM table
WHERE st LIKE "%:a%"
OR st LIKE ":a%"
OR st LIKE ":a"
OR st LIKE "%:a"
");
$ps->execute(array(
':a' => $var
));
这显然行不通。
最佳答案
%
符号必须是$var
的一部分,而不是准备好的语句的一部分。而且您只需要%:a%
它包含where子句的所有其他部分
$ps = $db->prepare("
SELECT id
FROM table
WHERE st LIKE :a
");
$ps->execute(array(
':a' => "%".$var."%"
));
关于mysql - 将LIKE与已准备好的语句一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44493226/