SELECT查询返回PHP中的0行和phpMyAdmin中的1行

时间:2014-07-24 16:48:21

标签: php mysqli prepared-statement

我正在尝试执行非常简单的查询:

SELECT `id` 
FROM `some_table` 
WHERE `field_1`=? AND `created` >= DATE_SUB(Now(), INTERVAL 1 DAY)
  • 数据库表中的'field_1'是VARCHAR(256)。
  • 'field_1'参数长度为256个字符,仅包含[a-fA-F0-9]。

问题
如果我在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)后,所有事情都变得正常了。奇迹。

0 个答案:

没有答案