当我想知道阿尔弗雷德有多少鞋时,我总是会计算表中的行数" usershoes" userid与Alfred的匹配
但是由于我切换到PDO,选择行数不简单或防弹/一致,我重新考虑我的方法
也许我应该保留一个int字段" shoes"直接在表格"用户"中,保留鞋子的数量,然后沿途增加/减少该用户的数量?感觉不对..
如果有人在现有选择查询上进行简单行计数的方法,没有额外查询,请告诉我
答案 0 :(得分:0)
尝试这样的事情
SELECT COUNT(*) FROM usershoes
WHERE userid="theIdOfTheUser";
答案 1 :(得分:0)
我无法计数(fetchColumn())或fetchColumn()才能正常工作(当0为实数时输出1)
现在我正在使用它,它可以工作:
$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
}
答案 2 :(得分:-1)
使用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行。
取自: http://php.net/manual/en/pdostatement.rowcount.php#83586