2011-10-22 165 views
1

我有3个不同的查询,一些工作,有些不。PDO与SELECT MySQL的rowCount(),为什么一个工作,而不是其他?

我知道pdo select不适用于mysql,那么为什么这些工作?

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

返回正确的数据,如果我再添PARAM没有,

$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(); 
+0

也许是因为第二个查询*确实*没有返回任何有效的行?您是否尝试过在MySQL客户端(如MySQL查询浏览器)或命令行中执行查询,并声称查询应该*确实*返回ID **和**年龄都匹配的账户? –

+0

不,它定义返回100%; – PHP

回答

-2

第二个查询要么失败,要么发生错误,要么只是找不到符合WHERE条件的行。 要显示第一个原因,请将此行添加到连接代码。

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

作为每细手册,rowCount()仅被定义为DML查询:INSERTUPDATE,或DELETE。该手册指出SELECT查询“不能保证所有数据库”,事实上MySQL的支持并不可靠。

+0

什么是downvotes?这可能不是OP想要听到的答案,但这是问题的正确答案。他误解了rowCount()函数的作用。 – dotancohen

相关问题