Php 如何从数据库列获取所有值
我有一个我正在创建的基本系统,用户在其中创建目标。插入目标时,Php 如何从数据库列获取所有值,php,mysql,count,Php,Mysql,Count,我有一个我正在创建的基本系统,用户在其中创建目标。插入目标时,status列的值为0。当目标完成时,该值更新为1。因此,我试图做的是获取特定用户(当前会话的用户)的ID总数(目标数量的行),然后获取status列的值,然后计算这些值。一旦添加了实际的status列值,我想将其除以id的总数。我基本上是想弄清楚如何获得一个完成率 我不确定如何才能: -计算用户的总id数。 -获取用户的状态列的值,然后添加这些值 谁能给我指出正确的方向吗 Table Create Table goals CREAT
status
列的值为0。当目标完成时,该值更新为1。因此,我试图做的是获取特定用户(当前会话的用户)的ID总数(目标数量的行),然后获取status
列的值,然后计算这些值。一旦添加了实际的status
列值,我想将其除以id的总数。我基本上是想弄清楚如何获得一个完成率
我不确定如何才能:
-计算用户的总id数。
-获取用户的状态
列的值,然后添加这些值
谁能给我指出正确的方向吗
Table
Create Table
goals
CREATE TABLE `goals` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`title` text COLLATE utf8_unicode_ci NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`status` int(5) NOT NULL,
`importance` int(5) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_c
$select_goals_sql = "
SELECT *
FROM goals
WHERE user_id = ?
ORDER BY id DESC
";
if ($select_goals_stmt = $con->prepare($select_goals_sql)) {
$select_goals_stmt->execute(array($user_id));
$rows = $select_goals_stmt->fetchAll(PDO::FETCH_ASSOC);
$goals = array();
foreach ($rows as $row) {
$goal_date = $row['date'];
$fixed_goal_date = fixDate($goal_date);
// the varialbe I will name it $status_completed =
$html = "";
编辑:
$goal\u total\u sql=”
选择sum(状态)作为sumna,
将(*)计数为cnt
来自目标
其中user_id=?
";
如果($goal\u total\u stmt=$con->prepare($goal\u total\u sql)){
$goal_total_stmt->execute(数组($user_id));
$rows=$goal\u total\u stmt->fetchAll(PDO::FETCH\u ASSOC);
foreach($行作为$行){
$actual_status=$row['status'];
$total_status=$row['id'];
}
}
?>
我很难说出您在这里需要什么,因为问题标题与正文和提供的代码相矛盾。但据我所知
SELECT sum(status) as summa, COUNT(*) as cnt FROM ...
从userId=?按状态分组\u id
应统计每个状态的id数
SELECT COUNT(*) as goal_count, status FROM goals WHERE user_id = ? GROUP BY status;
这将以表格形式显示状态旁边的目标计数
下面是一个sqlfiddle:
因此,使用修改后的create表(您应该使用Innodb,为了简单起见,我使用了Collac)
您的结果应该是这样的:
+------------+--------+
| goal_count | status |
+------------+--------+
| 1 | 1 |
| 2 | 2 |
| 2 | 3 |
| 2 | 4 |
+------------+--------+
我不确定是否有一种方法可以让PHP不必再创建另一个查询就可以做到这一点,因为我已经在与相关数据库建立连接。您的查询获得完成率,但是否仍需要获得完成率,然后获得id和
状态的不可更改的总数,其中一个作为值,或者我还需要对这些进行另一次查询?我看到您进行了编辑。既然在查询中定义了这些变量,那么我如何将它们执行到变量中呢?我只是编辑了我的问题,以显示我在做什么。变量是未定义的,但每当我将foreach添加回并将结束括号扩展到回音之后,页面将变为空白。为了获得学习基本PDO所需的选定值,请显示它们。我无法理解为什么你总是试图展示其他价值观
+------------+--------+
| goal_count | status |
+------------+--------+
| 1 | 1 |
| 2 | 2 |
| 2 | 3 |
| 2 | 4 |
+------------+--------+