我希望标题有意义,如果没有,我会在这里尝试澄清。首先,就像我处理的许多代码一样,我继承了这个或只是监督它,并且没有被允许使用 mysqli 重新编写,所以请不要写“你现在做错了”的帖子。提前致谢。
table_1 有这样的布局
+----+-----------+------------+
| id | from_name | from_email |
+----+-----------+------------+
| 1 | John | john@a.com |
| 2 | Juan | juan@a.com |
| 3 | Mark | mark@a.com |
| 4 | John | john@a.com |
+----+-----------+------------+
我像这样查询它以获得我需要的结果。
<?php
$q = "SELECT `id` FROM `table_1` WHERE `from_email` = 'john@a.com'";
$r = mysql_query($q) or die(mysql_error()); // mysql_error is removed in production
$ids = mysql_fetch_assoc($r);
?>
现在,当我遍历它并将 id 打印到屏幕上时,我得到了预期的结果,
1
4
现在我需要获取这些 ID 并在包含大小信息的 Table_2 中的 WHERE 子句中使用它们,以便我可以计算所有消息的总大小。Table_2 看起来像这样。
+----+---------+------------+
| id | table_1 | size |
+----+---------+------------+
| 1 | 1 | 44023 |
| 2 | 2 | 372 |
| 3 | 3 | 13243 |
| 4 | 4 | 423115 |
+----+---------+------------+
根据我想要的解决方案,我应该能够构建一个 while 或 foreach 循环来获取大小并让我正确添加它们?我尝试了以下方法:
<?php
$total_size = 0;
while($ids = mysql_fetch_assoc($r)){
$q2 = "SELECT `size` FROM `table_2` WHERE `table_1` = '".$ids['id']."'";
$r2 = mysql_query($q2) or die mysql_error()); // removed in production
$add = mysql_fetch_assoc($r2);
$total_size = $total_size + $add['size'];
}
?>
但是当我去 echo $total_size 时,我什么也看不到,屏幕上什至没有 0 并且 MySQL 没有抛出任何错误。如果我最初设计了这个表,所有这些数据都将在同一个表中,但由于我没有,我别无选择,只能“让它工作”。从它的外观来看,它应该可以工作。