2015-12-11 72 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);

破滅的伎倆,感謝您的幫助