2011-04-03 78 views
2

我已经在这里检查了这个问题的答案,但似乎无法找到它。其他问题一直是关于没有返回结果,但我的抛出一个SQL错误。MySQL错误,当通过PHP运行时,但不是在phpMyAdmin中

我有这个疑问,我通过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中运行它,它提供了以下错误:未知列“CUSTOMER.CUST_FNAME”在“where子句。但是当我通过My​​SQL直接运行它(通过连接到数据库的程序运行它)时,它会返回我想要的结果而不会出错。

这可能是显而易见的,但我需要另一双眼睛来帮助弄清楚。

谢谢!

更新:我有一个文件,动态创建此查询与通过GET网址给出的变量。我使用mysql_real_escape_string()转义这些变量,然后将它们放在自己的位置并运行查询。这个问题似乎与查询的动态性质有关;如果我在复制并粘贴查询后将查询复制并粘贴到一起,请将其作为字符串放入我的文件中并运行它,它可以正常工作。我试图在将动态查询放到一起时将其转换为字符串,但它没有解决问题。有什么想法吗?

UPDATE 2:我今天去看应用程序,尝试再次调试问题,它突然工作,我不知道它会如何工作 - 因为我还没有完成除了试图清理我正在运行的文件中的代码之外的任何内容......感谢大家的帮助!

+3

确保你连接了正确的数据库?我只能想到两者之间的变化。 – Ben 2011-04-03 03:02:46

+0

@mazzzzz:我确定它是连接的,我有一个数据库类,它可以保持跨应用程序的连接,如果删除where子句的那部分,查询可以通过php运行。 – Key 2011-04-03 03:04:59

+0

你应该定义'JOINs' – bensiu 2011-04-03 03:07:18

回答

0

如果这是一个连接错误,你会收到一个PHP错误,因为这是一个MySQL错误,我可以假设你有一个连接资源,但是,没有选择数据库,请确保: mysql_select_database($dbname, $conn)指向正确的数据库。 如果失败,你可以尝试连接到正确的数据库使用查询本身

[Database].[table].[field] 

尝试先运行一个小的查询,看看问题到底是什么,espacially为它给你错误的领域。

最终你会发现这是一个愚蠢的错误。

祝你好运!

+0

它不应该与没有选择数据库有关,因为它在我删除where子句中的“CUSTOMER.CUST_FNAME LIKE'%k%'”部分时起作用。我也将查询移动到不同的文件来运行,并且它执行得非常好 - 但我需要它运行在它原来的文件中,所以我将不得不弄清楚。 – Key 2011-04-04 20:27:37

相关问题