在查询中添加联接后 - 它不起作用

时间:2014-02-14 09:03:39

标签: mysql

我有这个查询,stackoverflow成员帮助了我

$raw_results = mysql_query("SELECT * FROM ProductTrans
    WHERE (`ProductName` LIKE '%".$query."%') OR (`PalletSpace` LIKE '%".$query."%')") or die(mysql_error());

然后我添加了一个给我这个

的联接
$raw_results = mysql_query("SELECT PalletSpaces.*, ProductTrans.*
FROM PalletSpaces INNER JOIN ProductTrans ON PalletSpaces.PalletSpaceID = ProductTrans.PalletSpace;
        WHERE (`ProductTrans.ProductName` LIKE '%".$query."%') OR (`PalletSpaces.PalletSpace` LIKE '%".$query."%')") or die(mysql_error());

这给了我错误你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'WHERE(ProductTrans.ProductName LIKE'%me%')或(PalletSpaces.PalletSpace LI'在第3行附近)使用正确的语法

我做错了什么?

4 个答案:

答案 0 :(得分:1)

SELECT s.*
     , t.*
  FROM PalletSpaces s
  JOIN ProductTrans t
    ON s.PalletSpaceID = t.PalletSpace
 WHERE t.ProductName LIKE '%$query%' OR s.PalletSpace LIKE '%$query%';

答案 1 :(得分:0)

... paces.PalletSpaceID = ProductTrans.PalletSpace;
                                                  ^----

分号终止查询。在它被视为完全独立/新查询之后的任何东西。由于PHP MySQL驱动程序禁止在单个query()调用中进行多个查询,因此会出现语法错误。

答案 2 :(得分:0)

只需要在JOIN语句后删除分号:

SELECT PalletSpaces.*, ProductTrans.* FROM PalletSpaces INNER JOIN ProductTrans ON PalletSpaces.PalletSpaceID = ProductTrans.PalletSpace WHERE ( {ProductTrans.ProductName {1}} {PalletSpaces.PalletSpace {1}}

答案 3 :(得分:0)

从您的代码中

FROM 
    PalletSpaces 
INNER JOIN 
    ProductTrans ON PalletSpaces.PalletSpaceID = ProductTrans.PalletSpace;
WHERE 
    (`ProductTrans.ProductName` LIKE '%".$query."%') 
    OR (`PalletSpaces.PalletSpace` LIKE '%".$query."%')") 
    OR die(mysql_error());

这给了我错误你的SQL语法有错误;查看与

对应的手册

ProductTrans.PalletSpace

之前WHERE之后删除分号