mysql数组转换为字符串

时间:2015-12-11 16:22:47

标签: php mysql arrays

我正在尝试使用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];
}

有没有一种好方法可以做到这一点,或者我是否以正确的方式看待它? 也欢迎更好/更容易的角度!

2 个答案:

答案 0 :(得分:1)

这个

$sql_string = implode(', ', $zip_list);

应该这样做。

样品:

$zip_list = array(1, 2);
$sql_string = implode(', ', $zip_list);
echo $sql_string;

输出:

1, 2

演示:https://eval.in/483839

这假设您在分配时验证了$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成功了,谢谢你的帮助