[英]MySQL count(*) not returning rows with same input
老实说,我不知道我正在做什么,花了至少1个小时寻找有同样问题的人,但找不到任何适合我/修复我的问题的人。
$auth_user = new USER();
$user_id = $_SESSION['user_session'];
$asd = $auth_user->runQuery("SELECT COUNT(*) FROM ticket_replies WHERE uid=:userid");
$asd->execute(array(':userid'=>$user_id));
$rows = $asd->fetchAll();
$numrows = count($rows);
echo $numrows;
甚至不确定这是否正确,但确实在页面上返回1。
$auth_user = new USER();
$user_id = $_SESSION['user_session'];
$asd = $auth_user->runQuery("SELECT uid, count(*) FROM ticket_replies WHERE uid=:uname");
$asd->execute(array(':uname'=>$user_id));
$ticketsrow = $asd->fetchAll();
$count = count($ticketsrow);
foreach($ticketsrow as $row9){
echo $row9['uid'];
}
上面的代码返回'5'的值,如果表中的值是1,但显然我希望它以1,2和3的顺序返回。
从哪里删除uid ..
只是在uid上应用groupBy,我不知道语法,但在简单的sql语句中就是这样
SELECT *,count(*) AS count FROM `ticket_replies` group By `uid` order by `count`
删除它也
$numrows = count($rows);
做这个
foreach($ticketsrow as $row9){
echo $row9['uid'];
echo $row9['count'];
}
你很高兴...
让我们解决您的第一个代码块的问题执行以下操作
$auth_user = new USER();
$user_id = $_SESSION['user_session'];
$asd = $auth_user->runQuery("SELECT COUNT(*) AS `count` FROM ticket_replies WHERE uid=:userid");
$asd->execute(array(':userid'=>$user_id));
$rows = $asd->fetchAll();
fetchAll
函数返回一个数组,所以当你使用count($rows)
,你得到的是数组的大小而不是sql语句的结果。 要获取sql语句的结果,您需要执行以下操作
print_r($rows)
echo $rows[0]['count']; // print the result of the sql
要解决第二个代码块的问题,请执行以下操作
$auth_user = new USER();
$user_id = $_SESSION['user_session'];
$asd = $auth_user->runQuery("SELECT *, COUNT(*) AS `count` FROM ticket_replies GROUP BY `uid` ORDER BY `count`");
$asd->execute();
$ticketsrow = $asd->fetchAll();
print_r($ticketsrow);
foreach($ticketsrow as $row){
echo $row['uid'];
echo $row['count']
}
从以下查询中获取计数
select count(*) as count from FROM ticket_replies WHERE uid=:uname
修改你的代码就像这样
echo $ticketsrow[0]['count'];
由于您在where子句中传递userid,因此上述查询将始终返回一行。 或者只是尝试var_dump($ ticketsrow)以获得如何访问计数的线索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.