在MYSQL SELECT查询中将PHP索引数组更改为Pass

时间:2015-09-09 08:32:50

标签: php mysql arrays

下面是My Array

Array ( [0] => test [1] => jaz )

我想在mysql中使用IN函数传递此数组

$q = "select * from claimant where org IN (Array)";

但我需要将我的INDEXED ARRAY更改为简单数组,如(1,2,3,4) 我如何更改数组并将其传递给mysql IN条件 在此先感谢

2 个答案:

答案 0 :(得分:1)

如果您的数组不包含引号(“或”)之类的值,那么您可以这样:

$array = array(1=>'test', 2=>'jaz');
$inClause = '"' . implode('","', $array) . '"';
$q = "select * from claimant where org IN ({$inClause})";

重要说明

即使这段代码片段适合您,如果数组中的值是来自用户(用户以某种形式输入某些形式),那么您的SQL查询将会受到SQL注入攻击的影响。这意味着有人可以删除您的数据库,或者获取您的数据。

答案 1 :(得分:0)

首先将array转换为string。您不能直接在String中使用数组。

使用此代码将数组转换为字符串:

$array = array(0 => 'test',1 =>'jaz');

$str = "";
foreach($array as $value) $str .= ",'$value'";
$str = substr($str,1);

然后您可以将SQL更改为:

$q = "select * from claimant where org IN ($str)";

这应该生成如下的SQL字符串:select * from claimant where org IN ('test','jaz')