计数行,或保留一个字段进行计数



当我想知道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

相关内容

  • 没有找到相关文章

最新更新