我有一个简单的pdo准备查询:
$result = $db->prepare("select id, course from coursescompleted where person=:p");
$result ->bindParam(':p', $q, PDO::PARAM_INT);
$result->execute();
$rows = $result->fetch(PDO::FETCH_NUM);
echo $rows[0];
Run Code Online (Sandbox Code Playgroud)
echo似乎返回记录的ID值,而不是查询返回的记录数?
对此有何想法或解释?
Ste*_*hen 17
你已经执行的从数据库返回行的查询,获取的第一行从结果到一个变量,然后回显该行的第一列.
如果要计数,请执行SQL计数()
$result = $db->prepare("select count(*) from coursescompleted where person=:p");
$result->bindParam(':p', $q, PDO::PARAM_INT);
$result->execute();
$rowCount = $result->fetchColumn(0);
echo $rowCount;
Run Code Online (Sandbox Code Playgroud)
PDO :: FETCH_NUM: 从第0列开始,返回由结果集中返回的列号索引的数组
您根本没有获取行数.
SELECT COUNT(*) FROM coursescompleted where person=:p
Run Code Online (Sandbox Code Playgroud)
此查询将返回总行数 $rows[0];
编辑:
请看@ ray的答案.使用count(id)
比count(*)
InnoDB 更好.
您可以从以前的查询中按以下方式获取行计数.
$row_count = $result->rowCount();
Run Code Online (Sandbox Code Playgroud)
但请注意:
如果关联的PDOStatement执行的最后一个SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数.但是,并不保证所有数据库都有这种行为,不应依赖于便携式应用程序.
归档时间: |
|
查看次数: |
53014 次 |
最近记录: |