【问题标题】:MySQL error when ran through PHP, but not in phpMyAdmin通过 PHP 运行时出现 MySQL 错误,但在 phpMyAdmin 中没有
【发布时间】: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 相同,所以不知道为什么会出现问题。

标签: php mysql sql


【解决方案1】:

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

[Database].[table].[field]

首先尝试运行一个小查询,看看问题到底出在哪里,尤其是出现错误的字段。

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

祝你好运!

【讨论】:

  • 它不应该与没有选择数据库有关,因为如果我删除 where 子句的 "CUSTOMER.CUST_FNAME LIKE '%k%'" 部分,它就可以工作。我还将查询移动到另一个文件以运行,它执行得非常好 - 但我需要它在它原来所在的文件中运行,所以我必须弄清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 2014-12-07
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多