【发布时间】:2011-04-03 03:01:26
【问题描述】:
我已在此处查看此问题的答案,但似乎找不到。其他问题是关于不返回结果,但我的抛出了一个 SQL 错误。
我有这个查询,我正在通过 PHP 运行:
SELECT WISH.CUST_ID, CUSTOMER.CUST_LNAME, CUSTOMER.CUST_FNAME,
WISH.ITEM_ID, ITEM.ITEM_NAME, WISH.WISH_NOTES,
WISH.WISH_ADDED, WISH.WISH_DELETED
FROM WISH
LEFT JOIN ITEM ON WISH.ITEM_ID = ITEM.ITEM_ID
LEFT JOIN CUSTOMER ON WISH.CUST_ID = CUSTOMER.CUST_ID
WHERE WISH.CUST_ID != -1 AND CUSTOMER.CUST_FNAME LIKE '%k%'
ORDER BY ITEM.ITEM_DELETED ASC
LIMIT 0, 15
当我在 PHP 中运行它时,它给出了以下错误:'where 子句中的未知列'CUSTOMER.CUST_FNAME'。但是当我直接通过 MySQL 运行它时(我通过连接到数据库的程序运行它)它会返回我想要的结果而不会出错。
这可能是显而易见的,但我需要另一双眼睛来帮助弄清楚。
谢谢!
更新:我有一个文件,它使用通过 GET url 给出的变量动态创建此查询。我正在使用 mysql_real_escape_string() 转义这些变量,然后将它们放在它们的位置,并运行查询。问题似乎与查询的动态性质有关。如果我将查询放在一起后复制并粘贴,将其作为字符串放入我的文件中并运行它,它可以正常工作。将动态查询放在一起后,我尝试将其转换为字符串,但它没有解决问题。有什么想法吗?
更新 2:我今天去查看应用程序以尝试再次调试问题并且它突然工作,我不知道它会使它工作 - 因为我没有做任何事情除了试图清理我正在运行的文件中的代码...感谢大家的帮助!
【问题讨论】:
-
确保您连接了正确的数据库?我唯一能想到的就是两者之间的变化。
-
@mazzzzz:我确定它已连接,我有一个数据库类,可以在我的应用程序中保持连接,如果我删除 where 子句的那部分,查询通过 php 运行良好。跨度>
-
@bensiu:左还是右?也许我应该 - 以后可能会,但它仍然应该按原样运行查询......
-
@bensiu:我用左连接更新了问题,并在我的代码中做了同样的事情。
-
左连接是不对的,除非你可以有一个没有项目/客户的愿望。 INNER JOIN 可能是要走的路。这与 JOIN 相同,所以不知道为什么会出现问题。