我正在尝试执行一个查询,我在其中使用MySQL in-function,执行以下操作:
SELECT * FROM table WHERE something IN(1,2,3)
所以我会选择所有有"东西"分别设为1,2或3。
我直接在DB上执行的查询工作得很完美,但我的问题是,每当我将它作为预准备语句传递给PHP时,它会将我的IN值转换为字符串,而不是int,因此它变为:< / p>
SELECT * FROM table WHERE something IN("1,2,3")
注意&#34; &#34;里面IN。这不会返回任何内容,因为列&#34;某些内容&#34;存储为int值,而不是字符串。此外,我认为它会搜索1个大字符串。
这是一个类似我的用例的简单示例:
$values = "1,2,3"; // These needs to be converted to ints, so it reads 1,2,3
if ($stmt = $connection->prepare('SELECT * FROM table WHERE something IN(?)')) {
$stmt->bind_param("s", $values);
}
答案 0 :(得分:1)
您必须使用FIND_IN_SET而不是IN,如下所示:
$values = "1,2,3"; // These needs to be converted to ints, so it reads 1,2,3
if ($stmt = $connection->prepare('SELECT * FROM `table` WHERE FIND_IN_SET(`something`, ?)) {
$stmt->bind_param("s", $values);
}