我目前正在将所有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.
我在这里缺少什么。 感谢
答案 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.如果你想要行的计数,只需使用查询的结果。