我正在尝试使用php列表进行查询,我甚至不确定它是否可行,但希望您能就此事提供一些建议/帮助。
我从包含大量邮政编码的另一个函数中获取了一个zip列表,我想使用该列表来缩小搜索范围。
注意:C:\ wamp \ www
中的数组到字符串转换
这是我将数组转换为字符串错误的地方
. JOIN zip_list zl ON r.zip_code IN ('$zip_list') "
我知道将$ zip_list替换为('2150','2165')非常有效,但是列表会很长,所以我不能只放$ zip_list [$ i]。
我尝试使用$ trimZip和$ test进行一些转换,但它总会产生相同的错误。
for($i=0; $i<count($zip_list); $i++){
array_push($trimZip, "'".$zip_list[$i]."',");
$i = $i+1;
}
for($i = 0; $i<count($trimZip); $i++){
$test[$i] = $trimZip[$i];
}
有没有一种好方法可以做到这一点,或者我是否以正确的方式看待它? 也欢迎更好/更容易的角度!
答案 0 :(得分:1)
这个
$sql_string = implode(', ', $zip_list);
应该这样做。
样品:
$zip_list = array(1, 2);
$sql_string = implode(', ', $zip_list);
echo $sql_string;
输出:
1, 2
这假设您在分配时验证了$zip_list
中的数据。直接在SQL中使用的变量不是一种好的做法。你应该真正研究参数化的查询。
我做:
$zip_list = array(1, 2);
foreach($zip_list as $param) {
$placeholders[] = '?';
}
$sql_string = implode(', ', $placeholders);
echo $sql_string;
然后在准备中使用$sql_string
,在执行中使用$zip_list
。
取决于你的司机:
http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
http://php.net/manual/en/pdo.prepared-statements.php
答案 1 :(得分:0)
$ sql_string = implode(',',$ zip_list);
Implode成功了,谢谢你的帮助