我有一个声明,我希望执行以查找包含字符串的列是否包含特定值。使用LIKE与准备好的语句
+----+------+
| id | st |
+----+------+
| 0 | 2183 |
| 1 | 5820 |
| 2 | 2984 |
| ...| ... |
+----+------+
说我希望能够找到其中st
包含1中的所有行,我会用这些有条件的地方:
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子句的所有其他部分 – Jens