当我想知道Alfred有多少双鞋时,我总是计算usershoes表中userid匹配Alfred的行数
但由于我切换到PDO,选择行数不简单或防弹/一致,我正在重新考虑我的方法
也许我应该直接在表"users"中保留一个int字段"shoes",保留鞋子的数量,然后在此过程中增加/减少该用户的数量?感觉不对…
如果有人有一个可靠的方法对现有的选择查询进行简单的行计数,没有额外的查询,让我知道
试试这样
SELECT COUNT(*) FROM usershoes
WHERE userid="theIdOfTheUser";
我无法得到count(fetchColumn())或fetchColumn()工作正确(输出1时0是实数)
现在我用这个,它起作用了:
$sql = 'SELECT COUNT(*) as numrows, shoecolor FROM usershoes WHERE userid = ?'
$STH = $conn->prepare($sql);
$STH->execute(array($someuseridvar));
然后:
$row = $STH->fetch();
if ($row['numrows'] > 0) {
// at least one row was found, do something
}
对于MySQL,您可以使用FOUND_ROWS():
$db = new PDO(DSN...);
$db->setAttribute(array(PDO::MYSQL_USE_BUFFERED_QUERY=>TRUE));
$rs = $db->query('SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 5,15');
$rs1 = $db->query('SELECT FOUND_ROWS()');
$rowCount = (int) $rs1->fetchColumn();
$rowCount
将包含总行数,而不是15。
摘自:83586年http://php.net/manual/en/pdostatement.rowcount.php