【发布时间】:2015-12-09 11:46:55
【问题描述】:
我有这个查询在本地主机上工作:
$clicks = $wpdb->get_results(
"SELECT *
FROM {$wpdb->prefix}data
WHERE date BETWEEN ( NOW() - INTERVAL {$args['day']} DAY ) AND NOW()
{$where}
ORDER BY {$args['order_by']} {$args['order']}
LIMIT {$args['data_per_page']} OFFSET {$offset}",
ARRAY_A
);
$clicks 返回预期的结果数组。
我的本地主机使用 XAMPP 1.8.3,它使用 PHP 5.5.11 和 5.6.16(基于 this)。
当我在在线服务器上测试它时(我使用带有 PHP 5.4.45 和 MySQL 5.5.42 的 Hostgator),$click 返回空数组。
没有语法错误警告或任何警告,所以我很困惑。
是语法问题吗?调试 MySQL 查询的最佳实践是什么?
【问题讨论】:
-
$wpdb 使用哪些类?它看起来像 pdo。你的凭据还好吗?
-
这是一个访问 DB:codex.wordpress.org/Class_Reference/wpdb 的 WordPress 类。我的凭据很好。其他查询正常执行。只有这个查询有问题。
-
所以您使用 wordpress,我假设您不能使用我提供的 php 错误报告选项,但是您可以在调试模式下运行 wordpress 吗? stackoverflow.com/q/1080679/3664960
-
是的,我从一开始就一直在打开 wp 调试,但我没有看到任何错误。我认为查询很好,因为它在本地主机上正常执行,但不是在线服务器。可能是因为 MySQL 版本不同?
-
您是否尝试在 MySQL 客户端、phpMyAdmin 或其他任何东西上运行查询? (在目标服务器上,替换您需要的值)。另外,如果查询运行正常,请尝试继续查询真正运行的源代码并将代码更改为仅打印查询并退出,可能是参数填写错误。