首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从活动中选择maxAmount -是否从注册中选择计数(活动)?

从活动中选择maxAmount -是否从注册中选择计数(活动)?
EN

Stack Overflow用户
提问于 2018-06-09 21:48:27
回答 1查看 41关注 0票数 -2

我正在做一个我从学校得到的项目,但现在我遇到了一个问题。我有两个问题:

代码语言:javascript
复制
$sql = 'SELECT Amount FROM activities ORDER BY Id ASC';

和:

代码语言:javascript
复制
$select = 'SELECT COUNT(Activity) as Activity 
           FROM `registrations` 
           INNER JOIN activities 
                ON registrations.Activity = activities.Name 
           WHERE registrations.Activity='.$row['Name'].' 
                AND registrations.Morning/Afternoon='.$row['Morning/Afternoon'].'';

因此,需要发生的是来自$sql查询的数量-来自$select查询的计数(活动)。

到目前为止,我得到了这个,但它并没有按照我想要的方式工作:

代码语言:javascript
复制
<?php

$sql = 'SELECT * FROM activities ORDER BY Id ASC';
foreach ($db->query($sql) as $row) {
    $select = 'SELECT COUNT(Activity) as Activity 
               FROM `registrations` 
               INNER JOIN activities 
                  ON registrations.Activity = activities.Name 
               WHERE registrations.Activity=' . $row['Name'] . ' 
                  AND registrations.Morning/Afternoon=' . $row['Morning/Afternoon'] . '';

    foreach ((array)$select as $select2) {
        $maxAantal = $row['Amount'] - $select2['Activity'];
    }

    echo '<tr>';
    echo '<td>' . $row['Name'] . '</td>';
    echo '<td>' . $row['Location'] . '</td>';
    echo '<td>' . $row['Begintime'] . '</td>';
    echo '<td>' . $row['Endtime'] . '</td>';
    echo '<td>' . $maxAmount . '</td>';
    echo '<td>' . $row['Deadline'] . '</td>';
    echo '<td>' . $row['Morning/Afternoon'] . '</td>';
    echo '<td>';
    echo '<a class="btn btn-secondary" href="readActi.php?id=' . $row['Id'] . '">Read</a>';
    echo '</td>';
    echo '</tr>';
}

$_SESSION['Id'] = $row['Id'];

?>

但它给了我这样的警告

代码语言:javascript
复制
Warning: Illegal string offset 'Activity'

我想不出怎么解决这个问题

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 22:17:55

您的第二个查询$select不会被执行,也不会被获取,而是只在变量$select中设置...您只是忘记了查询和获取它,这就是为什么没有设置$select2['Activity']

检查你的第二个foreach,我认为它应该是foreach ($db->query($select) as $select2)

使用精度进行编辑

在你的代码中,你有:

代码语言:javascript
复制
$select = 'SELECT COUNT(Activity) as Activity 
           FROM `registrations` 
           INNER JOIN activities 
              ON registrations.Activity = activities.Name 
           WHERE registrations.Activity=' . $row['Name'] . ' 
              AND registrations.Morning/Afternoon=' . $row['Morning/Afternoon'] . '';

然后

代码语言:javascript
复制
foreach($select as $select2)

这里的$select是一个包含查询的字符串。通过对其执行foreach操作,您将简单地逐个获取字符串的所有字符,然后索引['activity']将不存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50774950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档