下面是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条件 在此先感谢
答案 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')