将数组作为参数传递给SQL过程

时间:2014-09-10 13:59:10

标签: php mysql sql

我有SQL程序,我正在使用IN语句。它是这样的:

SELECT * FROM costumers WHERE id IN('1','2','12','14')

我需要做的是将值传递给IN statment作为参数,这是php中的数组,而不是硬编码。我怎样才能做到这一点?

6 个答案:

答案 0 :(得分:2)

你可以在这种情况下崩溃:

$array = array('1','2','12','14');
$ids = "'".implode("','", $array) . "'";
$sql = "SELECT * FROM `costumers` WHERE `id` IN($ids)";
echo $sql;
// SELECT * FROM `costumers` WHERE `id` IN('1','2','12','14')

或者如果您不想要任何引号:

$ids = implode(",", $array);

答案 1 :(得分:1)

您可以使用PHP函数Implode

$array = array("1","2","12","14");

$query = "SELECT * FROM costumers WHERE id IN(".implode(', ',$array).")"

答案 2 :(得分:1)

implode()是正确的功能,但您还必须注意数据的类型。

如果字段是数字,则很简单:

$values = array(1. 2, 5);
$queryPattern = 'SELECT * FROM costumers WHERE id IN(%s)';
$query = sprintf($queryPattern, implode(', ',$values));

但如果它是一个字符串,你必须使用单引号和双引号:

$values = array("foo","bar","baz");
$queryPattern = 'SELECT * FROM costumers WHERE id IN("%s")';
$query = sprintf($queryPattern, implode('", "',$values));

答案 3 :(得分:0)

这应该可以解决问题

$array = array('1','2','12','14');

SELECT * FROM `costumers` WHERE `id` IN('{$array}');

答案 4 :(得分:0)

尝试将php插入数组,然后将该字符串插入到SQL语句中:

$arr = array('foo', 'bar', 'baz');
$string = implode(", ", $arr);

SELECT * FROM customers WHERE id in ($string);

答案 5 :(得分:0)

使用PHP的join函数来连接数组的值。

$arr = array(1,2,12,14);

$sql = "SELECT * FROM costumers WHERE id IN(" . join($arr, ',') . ")";