2013-10-21 37 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

你不应该指定数据库名称。

它应该只是“用户”。

由于数据库名称可以为大多数站点配置,因此它将会改变。