我正在尝试执行非常简单的查询:
SELECT `id`
FROM `some_table`
WHERE `field_1`=? AND `created` >= DATE_SUB(Now(), INTERVAL 1 DAY)
问题
如果我在phpMyAdmin中运行此查询,我会按预期得到1行
但是如果我使用mysqli预处理语句和bind_param('s',...)
在PHP脚本中执行此查询,则$stmt->num_rows
始终为0.
我做错了什么?
编辑#1
这是PHP代码:
$mysqli = new mysqli($mysql_config['Host'], $mysql_config['User'], $mysql_config['Passphrase'], $mysql_config['Database']);
if ($mysqli -> connect_errno) {
syslog(LOG_ERR, '...');
exit;
}
if (!($stmt = $mysqli -> prepare('SELECT `id` FROM `some_table` WHERE `field_1`=? AND `created` >= DATE_SUB(Now(), INTERVAL 1 DAY)'))) {
syslog(LOG_ERR, '...');
exit;
}
if (!$stmt -> bind_param('s', $string_value)) {
syslog(LOG_ERR, '...');
exit;
}
if (!$stmt -> execute()) {
exit;
}
$stmt -> bind_result($id);
exit ('num rows is: ' . $stmt->num_rows);
输出始终为:num rows为:
最后
重新启动WebServer(Amazon EC2 Micro - Amazon Linux + Apache 2.4 + PHP 5.5)后,所有事情都变得正常了。奇迹。