切换到php pdo,计算行数

时间:2012-03-31 17:08:27

标签: php pdo

我目前正在将所有sql查询更新到pdo,我将使用prepare语句来防止sql注入攻击。到目前为止这么好,我现在卡在用pdo计算行数。 我试过以下:

 $sqlQuery = "SELECT COUNT(*) FROM News";
 $STIH = $DBH->query($sqlQuery);
 $rows_affected = $STIH->rowCount();
 echo($rows_affected); // returning result is 1, it should be 1038 

然而,当我使用像这样的旧代码时

$query = "SELECT COUNT(*) AS numrows FROM News";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
echo ($numrows); // it return result which I expected which is 1038 rows.

我在这里缺少什么。 感谢

4 个答案:

答案 0 :(得分:2)

你感到困惑。要获得1038,您需要行的结果。目前,您将获得SELECT COUNT返回的行数,即1行,其中包含1个值。

答案 1 :(得分:1)

由于某种原因,您不是取数据而是使用PDO获取行数 只需使用普通的mysql

,就可以使用PDO获取数据

答案 2 :(得分:1)

使用$sth->fetchColumn()获取数据。

$sqlQuery = "SELECT COUNT(*) FROM News";
$STIH = $DBH->query($sqlQuery);
$rows_affected = $STIH->fetchColumn();
echo ($rows_affected);

答案 3 :(得分:0)

查询是返回标量,因为您使用的是COUNT()。由于它是一个标量,它只有一行,因此它返回1.如果你想要行的计数,只需使用查询的结果。