我正在尝试使用 php 列表进行查询,我什至不确定是否可能,但希望您能就此事提供一些建议/帮助。
我从另一个包含大量邮政编码的函数中获取了一个邮政编码列表,我想使用该列表来缩小搜索范围。
Notice: Array to string conversion in C:\wamp\www
这是我得到数组到字符串错误的地方
。 JOIN zip_list zl ON r.zip_code IN ('$zip_list') "
我知道用 ('2150','2165') 替换 $zip_list 可以完美地工作,但是列表会相当长,所以我不能只放置 $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];
}
有没有好的方法可以做到这一点,或者我是否以正确的方式看待它? 更好/更简单的角度也受欢迎!
最佳答案
这个
$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
关于php - mysql 数组到字符串的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228070/