计算行数,或保留int字段进行计数?

时间:2014-07-11 10:24:47

标签: php mysql pdo count mysql-num-rows

当我想知道阿尔弗雷德有多少鞋时,我总是会计算表中的行数" usershoes" userid与Alfred的匹配

但是由于我切换到PDO,选择行数不简单或防弹/一致,我重新考虑我的方法

也许我应该保留一个int字段" shoes"直接在表格"用户"中,保留鞋子的数量,然后沿途增加/减少该用户的数量?感觉不对..

如果有人在现有选择查询上进行简单行计数的方法,没有额外查询,请告诉我

3 个答案:

答案 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