2015-12-11 52 views
0

我试图用php列表查询,我甚至不确定它是否可能,但希望您能就此提供一些建议/协助。
我从另一个包含很多邮政编码的函数中得到一个邮政编码列表,我想用这个列表缩小搜索范围。mysql数组转换为字符串

声明:Array对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

所以'$ zip_list'是一个数组?你想要将数组的值连接成一个字符串? – frz3993

+0

你可以使用'implode()'。像'$ zip_list = implode(',',$ zip_list);'? – frz3993

+0

@ frz3993是的,它现在是一个数组。我的工作是在整个查询中添加一个for循环,但这会导致很多不幸的查询。但它现在会做 我会给内爆去看看如何运作 –

回答

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

+0

似乎工作,谢谢。我会看看它 –

+0

如果它解决了你的问题,请记住接受它。 – chris85

0

$ sql_string =破灭( '',$ zip_list);

破灭的伎俩,感谢您的帮助