【问题标题】:Specific PHP Mysql query not working in root folder特定的 PHP Mysql 查询在根文件夹中不起作用
【发布时间】:2012-04-19 10:00:47
【问题描述】:

先来点历史。我们将网站从一个托管服务提供商 (hostexcellence) 转移到另一个 (1and1),因为客户希望将自己的托管与我们的经销商托管分开。

除了一件事之外,该网站运行良好。

由于某种原因,在根文件夹中完成的特定查询无法正常工作,但在子文件夹中可以正常工作。另外要注意的是,如果我执行一个应该返回多个结果的查询,它可以正常工作,但是如果我执行一个应该返回单个行项目的查询,它会返回一个空集。

这是其中一个查询

'SELECT `specials`.*, DATE_FORMAT(startdate, "%d %b %Y") AS sdate, DATE_FORMAT(enddate, "%d %b %Y") AS edate FROM `specials` WHERE enddate > NOW() and active = 1'

但是,如果我在不同的表上运行类似的查询,它就可以正常工作

'SELECT *, DATE_FORMAT(startdate, "%d %b %Y") AS sdate, DATE_FORMAT(enddate, "%d %b %Y") AS edate FROM events WHERE enddate >= NOW() AND active = 1'

正如我上面提到的,这些不适用于网站的根文件夹,但可以在任何子文件夹中使用。

mysql_error() 不返回任何内容。它只是返回一个空结果。

任何想法,因为我在过去两天一直试图追踪错误。

如果这有什么不同的话,它正在一个 apache 服务器上运行,并且目前该目录中没有 htaccess 文件。

提前致谢

编辑

我尝试了下面提到的所有方法,并重试了与该页面分开的查询,它们在其他页面和 phpmyadmin 中运行良好。所以我有点不知所措。

【问题讨论】:

  • open_basedir PHP 配置选项?
  • 很难相信 SQL 代码是目录感知的。很可能是您没有启用 PHP 错误日志记录,或者您的错误报告级别太低。
  • 我在页面中添加了以下内容(因为托管服务提供商在 php.ini 中允许的选项非常有限)来测试它,但它不会返回任何错误:ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); error_reporting(E_ALL);

标签: php mysql apache


【解决方案1】:

你试过了吗-

SELECT *, DATE_FORMAT(startdate, "%d %b %Y") AS sdate, DATE_FORMAT(enddate, "%d %b %Y") AS edate FROM specials WHERE enddate > NOW() and active = 1'

另外,作为备份计划,检查您与数据库的连接并尝试从连接命令和 mysql_select_db 返回错误
(或您用来选择数据库的任何方法)。

【讨论】:

  • 好的,我已经尝试了字符串,但它没有任何区别,并且连接是打开的,因为我能够在查询该特定表之前对其他表运行成功的查询
  • 您编写代码的 IDE/编辑器是什么?查询到的表是通过什么方式相互关联的?
  • 我使用 textmate 编辑我的文件并通过 ftp 上传。这是简单的自动增量字段。但是在有问题的顶部查询中,我不是按 ID 搜索,而是按日期以及是否在一个特定表上设置了活动标志。
猜你喜欢
  • 2016-07-06
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多