Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL表结果处理另一个表结果_Php_Mysql - Fatal编程技术网

Php MySQL表结果处理另一个表结果

Php MySQL表结果处理另一个表结果,php,mysql,Php,Mysql,下面你会发现我的代码,它不是全部,而是显示了什么是重要的。我有一些自定义函数,它们只是用来注释。我让我的代码搜索一个MySQL表,并根据当前会话用户id显示所有结果。然后我循环遍历这些结果,并为每个结果搜索另一个表。这非常有效,但我只是想看看是否有更好的方法来做到这一点,而不必为每个结果行循环和搜索表 <?php $table_sql = "SELECT * FROM participation WHERE shop_id = '{$session->user_id}'"; $res

下面你会发现我的代码,它不是全部,而是显示了什么是重要的。我有一些自定义函数,它们只是用来注释。我让我的代码搜索一个MySQL表,并根据当前会话用户id显示所有结果。然后我循环遍历这些结果,并为每个结果搜索另一个表。这非常有效,但我只是想看看是否有更好的方法来做到这一点,而不必为每个结果行循环和搜索表

<?php
$table_sql = "SELECT * FROM participation WHERE shop_id = '{$session->user_id}'";
$result = $database->query($table_sql);
$participation = array();
while ($row = $database->fetch_array($result)) {
        $participation[] = array (
                'shop_id'               => $row['shop_id'],
                'qpon_id'           => $row['qpon_id'],
                'distributor_id'        => $row['distributor_id']
        );
}
$qpons = array();
if (isset ($participation)) {
        if (!empty ($participation)) {
                foreach ($participation as $qpon) {
                        $table_sql = "SELECT * FROM qpons WHERE id = '{$qpon['qpon_id']}'";
                        $result = $database->query($table_sql);

                        while ($row = $database->fetch_array($result)) {
                                $qpons[] = array (
                                        'id'                    => $row['id'],
                                        'service'       => $row['service'],
                                        'start_date'    => $row['start_date'],
                                        'end_date'      => $row['end_date']
                                );
                        }
                }
        }
}


if (isset ($qpons)) {
if (!empty ($qpons)) {
foreach ($qpons as $value) {

echo '<tr>';
echo '<td>' . $value['service'] . '</td>';
echo '<td>' . $value['start_date'] . '</td>';
echo '<td>' . $value['end_date'] . '</td>';
echo '<td>' . $value['id'] . '</td>';
echo '<td class="action_icon"><a href="admin-edit.php?id=' . $value['id'] . '"><img src="images/icons/view.png" alt="View"></a></td>';
echo '</tr>';

}

} else {
echo '<tr>';
echo '<td>No Results Found!</td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '<td></td>';
echo '</tr>';
}

}
?>

使用JOIN子句将所有这些都放到一个查询中会大大加快

<?php
$table_sql = "SELECT q.* 
              FROM participation AS p
                  INNER JOIN qpons AS q ON p.qpon_id = q.id
              WHERE shop_id = '{$session->user_id}'";
while ($row = $database->fetch_array($result)) {
    $qpons[] = array (
        'id'                    => $row['id'],
        'service'       => $row['service'],
        'start_date'    => $row['start_date'],
        'end_date'      => $row['end_date']
    );
}