托管时我必须在select语句中指定数据库名称吗?

时间:2010-09-19 16:24:30

标签: php mysql

我在查询这个select语句时遇到错误。

 $comments = dbgetvar("SELECT SUM(CASE WHEN c.approve = '1' AND c.spam = '0' THEN 1 ELSE 0 END) AS approved,
                       SUM(CASE WHEN c.approve = '0' AND c.spam = '0' THEN 1 ELSE 0 END) AS pending,
                       SUM(CASE WHEN c.spam = '1' THEN 1 ELSE 0 END) AS spam,
                       COUNT(*) AS count
                       FROM COMMENTS c");

上面的代码在使用WAMP服务器的本地计算机上正常工作。但是当我在由cpanel驱动的服务器中托管它时,会出现以下错误。

  

注意:dbget:表   'bhatkaln_test.COMMENTS'不存在   在SELECT SUM中(CASE WHEN c.approve =   '1'和c.spam ='0'然后1 ELSE 0   END)AS批准,SUM(CASE WHEN   c.approve ='0'和c.spam ='0'然后   1 ELSE 0 END)AS待定,SUM(CASE   当c.spam ='1'那么1 ELSE 0 END)   AS垃圾邮件,COUNT(*)AS计数FROM   评论c in   /home/bhatkaln/public_html/test/admin-login/models/validation.php   第154行

上述错误是什么意思?在数据库中,评论表确实存在。

1 个答案:

答案 0 :(得分:3)

您正在Windows上测试您的服务器,其中表名称不区分大小写,因为它们最终会引用文件。

当您上传到基于Linux的服务器时,的文件系统区分大小写。它不起作用,因为您指定了COMMENTS,但表名可能是comments

有关详细信息,请参阅MySQL手册中的Identifier Case Sensitivity