我正在做一个我从学校得到的项目,但现在我遇到了一个问题。我有两个问题:
$sql = 'SELECT Amount FROM activities ORDER BY Id ASC';
和:
$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查询的计数(活动)。
到目前为止,我得到了这个,但它并没有按照我想要的方式工作:
<?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'];
?>
但它给了我这样的警告
Warning: Illegal string offset 'Activity'
我想不出怎么解决这个问题
发布于 2018-06-09 22:17:55
您的第二个查询$select
不会被执行,也不会被获取,而是只在变量$select
中设置...您只是忘记了查询和获取它,这就是为什么没有设置$select2['Activity']
。
检查你的第二个foreach
,我认为它应该是foreach ($db->query($select) as $select2)
使用精度进行编辑
在你的代码中,你有:
$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($select as $select2)
这里的$select
是一个包含查询的字符串。通过对其执行foreach操作,您将简单地逐个获取字符串的所有字符,然后索引['activity']
将不存在。
https://stackoverflow.com/questions/50774950
复制相似问题