php - mysql 数组到字符串的转换

标签 php mysql arrays

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

演示: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

关于php - mysql 数组到字符串的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228070/

相关文章:

MySQL:从数据库中获取记录并向行添加 COUNT() 列

MySQL:加入联合表

c - 在 C 中更新数组中的值

c++ - 指针数组 *grades[]

php - 是否可以使用 cygwin 在 windows 机器上完全模拟 linux web 服务器?

php - Mysql跨表查找

mysql - Ruby:按列名访问mysql数据?

arrays - 将带有值数组的字典快速映射到另一个带有值数组的字典?

php - 如何将 gzip 内容作为 PHP 响应发送

php - 通过 PHP 更新数据时出现问题