PHP Prepared Statement MySQL in-function,整数不是字符串

时间:2016-06-08 10:12:40

标签: php mysql

我正在尝试执行一个查询,我在其中使用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);
}

1 个答案:

答案 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);
}