【问题标题】:do i have to specify the database name in select statement while hosting?托管时是否必须在 select 语句中指定数据库名称?
【发布时间】:2010-09-19 16:24:30
【问题描述】:

查询此选择语句时出现错误。

 $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' AND c.spam = '0' THEN 1 ELSE 0 END) 经批准,SUM(CASE WHEN c.approve = '0' AND c.spam = '0' THEN 1 ELSE 0 END) 作为未决,SUM(CASE 当 c.spam = '1' THEN 1 ELSE 0 END) 作为垃圾邮件,计数(*)作为计数来自 评论 c 在 /home/bhatkaln/public_html/test/admin-login/models/validation.php 在第 154 行

上面的错误是什么意思?在数据库中确实存在 cmets 表。

【问题讨论】:

  • 您的表是否保存在服务器上的bhatkaln_test 数据库中?
  • 表示该表不存在。你确定你有 daniel 说的正确的数据库吗?
  • @Thomas 是的,我百分百确定它在我的数据库中。
  • 大写什么的?你试过 mysql_query 吗?
  • 是的,我正在为此使用用户定义的函数 dbgetvar。

标签: php mysql


【解决方案1】:

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

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

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

【讨论】:

  • 正确。让我试试这个。这可能是区分大小写的问题。
  • 问题已解决。虽然我知道这件事。它被忽视了。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多