使用SELECT mysql的PDO rowCount(),为什么一个工作而不是另一个?

时间:2011-10-22 12:38:23

标签: php mysql pdo

我有3个不同的查询,有些是工作,有些则没有。

我知道pdo select不能与mysql一起使用,为什么这些工作呢?

$q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ?");
$q -> execute(array($user['id']));
echo $q -> rowCount();

返回正确的数据,如果我添加另一个参数,则不会,

$q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ? && age = 12");
$q -> execute(array($user['id']));
echo $q -> rowCount();

它无法返回零,此查询再次起作用并正确显示匹配的行;

$q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ? && username = ? && logCount = -1");
$q -> execute(array($user['id'], $user['username']));

为什么有些工作和其他工作没有?

echo $q -> rowCount();

2 个答案:

答案 0 :(得分:1)

根据优质手册,rowCount()仅针对DML查询定义:INSERTUPDATEDELETE。该手册指出SELECT查询并非所有数据库都保证"事实上,MySQL的支持并不可靠。

答案 1 :(得分:-2)

第二个查询失败并出现错误或者无法找到符合WHERE条件的行。 要揭示第一个原因,请将此行添加到连接代码中。

$dbc->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );