2013-10-21 50 views
0

我的錯誤提供了1064它在我插入where語句之前工作。我把之前或之後的地方放在哪裏?Mysql語法似乎是正確的,但給出了錯誤代碼1064

<?PHP 
session_start(); 

include ("connection.php"); 

$city = $_POST['city']; 

$state = $_POST['state']; 

$results = array(); 
if($query = $db->query("SELECT business_id, BusinessName, date, post ". 
    "FROM WolfeboroC.posts ". "WHERE city= '$city' && state='$state'". 
    "JOIN WolfeboroC.users ON users.recid = posts.business_id ". 
    "ORDER BY date DESC LIMIT 0, 500")) 
{ 
    while($record = $query->fetch_assoc()) 
    { 
    $results[] = $record; 
    } 
    $query->close(); 
} 

echo json_encode($results); 
?> 
+2

把你的'&&'換成'AND' –

+0

哦,對吧,我是在php思考模式下謝謝 – user2354835

+0

它發生了,沒有造成任何傷害。 –

回答

1
"SELECT business_id, BusinessName, date, post ". 
"FROM WolfeboroC.posts ". "WHERE city= '$city' && state='$state'". 
"JOIN WolfeboroC.users ON users.recid = posts.business_id ". 
"ORDER BY date DESC LIMIT 0, 500" 

"SELECT business_id, BusinessName, date, post ". 
"FROM WolfeboroC.posts ". 
"JOIN WolfeboroC.users ON users.recid = posts.business_id ". 
"WHERE city= '$city' AND state='$state'". 
"ORDER BY date DESC LIMIT 0, 500" 

聯接動詞應該來之前WHERE。

+0

錯誤代碼:1052.在where子句中的列'城市'是不明確的 – user2354835

+0

和由弗雷德二世正確的方式&&應該是和。這是一個問題,但沒有解決它 – user2354835

+0

更改WHERE城市=到WHERE tablename.city =其中「表名」是您用來檢查城市的表。 –

0

您的JOIN WolfeboroC.users語法在它之前沒有空格,所以它出錯了MySQL

您的代碼:

if($query = $db->query("SELECT business_id, BusinessName, date, post ". 
    "FROM WolfeboroC.posts ". "WHERE city= '$city' && state='$state'". 
    "JOIN WolfeboroC.users ON users.recid = posts.business_id ". 
    "ORDER BY date DESC LIMIT 0, 500")) 

更正代碼:

if($query = $db->query("SELECT business_id, BusinessName, date, post ". 
    "FROM WolfeboroC.posts "." JOIN WolfeboroC.users ON users.recid = posts.business_id 

WHERE城市= '$城市' & &狀態= '$狀態' ORDER BY日期DESC LIMIT 0 「 。」 ,500「))

此外,您正在選擇字段:business_id, BusinessName, date, post

這些字段是ambigious。

您正在加入兩個表格。

因此,您應該指定哪個字段來自哪個表。

例如users.business_id, users.BusinessName, posts.date, posts.post

這裏,MySQL必須猜測哪個字段是哪個表。

如果兩個表都存在一個字段,它應該會引發錯誤。

此外,在SQL,WolfeboroC.users

你不應該指定數據庫名稱。

它應該只是「用戶」。

由於數據庫名稱可以爲大多數站點配置,因此它將會改變。