2012-03-29 40 views
0

所以基本上我有網站,可以檢查關閉的城市名稱。我將它們保存到一個密鑰下的本地存儲中。然後我通過Ajax將它們發送到我的php腳本下面。然後在PHP中,我將城市變量分解爲「,」,並根據給定的城市對城市進行過濾。但現在我只知道如何手動執行此操作,例如城市[0],城市[1]等。有沒有辦法將這些變量放入mysql語句中,具體取決於有多少個變量?如果我感到困惑,我很抱歉,我完全失去了知覺。任何幫助,將不勝感激。如何更改mysql語句取決於多少變量與PHP

這裏是我的代碼:

<?php 
$con = mysql_connect("localhost", "test", "test") or die('could not connect to mysql'); 

mysql_select_db("test", $con) or die('could not find database'); 


$city2 = $_POST['city2']; 

$cities = explode(",", $city2); 

$rep2 = $_POST['rep2']; 

$status2 = $_POST['status2']; 

$size2 = $_POST['size2']; 

$type2 = $_POST['type2']; 

$lat2 = $_POST['lat2']; 

$long2 = $_POST['long2']; 

$radius2 = $_POST['radius2']; 

if ($city2 == '') { 
    $city_stat = " city RLIKE '.*' "; 
} else { 
    $city_stat = " (city='$cities[0]' OR city='$cities[1]') "; 

} 


if ($radius2 == '') { 
    $radius_stat = '10'; 
} else { 
    $radius_stat = $_POST['radius2']; 

} 


if ($size2 == '') { 
    $size_stat = ''; 
} else { 
    $size_stat = " AND size='$size2' "; 

} 

if ($rep2 == '') { 
    $rep_stat = ''; 
} else { 
    $rep_stat = " AND rep='$rep2' "; 

} 


if ($status2 == '') { 
    $status_stat = ''; 
} else { 
    $status_stat = " AND status='$status2' "; 

} 



$result = mysql_query("SELECT lat,lng,id,rep,rep_num,name,city,state,zip,address,status,category,size FROM test WHERE $city_stat $rep_stat $size_stat $status_stat LIMIT 0 , 50 "); 

while ($array = mysql_fetch_assoc($result)) { 
    $array_json[] = $array; 




} 


echo json_encode($array_json); 
?> 

回答

2

從什麼我想你問的是,有可能是城市數量可變的,你想設置條件的城市可以是任何人。

所以不是:

$city_stat = " (city='$cities[0]' OR city='$cities[1]') "; 

你可以做這樣的事情:

$city_stat = '(city IN ('.implode(',',$cities).'))'; 
+2

凡在比手動輸入要好得多。 – 2012-03-30 00:01:53

+0

沒關係,那麼這將是最好的方式嗎? – 2012-03-30 00:06:19

+0

當我嘗試這個,它沒有返回任何結果,這是MySQL查詢跑了SELECT lat,lng,id,rep,rep_num,name,city,state,zip,address,status,category,size FROM醫院WHERE(city IN Abington))LIMIT 0,50 null – 2012-03-30 00:14:27