Цикл while не прекращает перебирать массив

0

У меня есть php файл, в котором я создал класс Bank - имеет 2 метода - первый производит 5 пользователей и заполняет случайные транзакции в базе данных. Второй должен отображать баланс пользователей.

Я искал на сайте, и ни у кого не было такого примера здесь.

Я успешно подключился к базе данных и написал (не очень хороший) запрос, чтобы получить все данные из обеих таблиц.

$query = "SELECT * FROM users, transactions";

Проблема, с которой я сталкиваюсь, заключается в том, что я не очень хорош в php, и синтаксис сводит меня с ума - мой цикл while перебирает результат, полученный в результате запроса, но не останавливается после прохождения всех строк результата в массив - он просто повторяется бесконечно.

$connection = mysqli_connect('localhost', 'root', 'root', 'ipromapp', '3306');

class Bank
{
    function balance() 
    {
        global $connection;

        if($connection)
        {
            echo ("Connection online<br>");
        }

        $query = "SELECT * FROM users, transactions";

        $result = mysqli_query($connection, $query) or die(mysql_error());

        echo "<table border='1px'>";
        echo "<tr>";
        echo "<td> ID </td>";
        echo "<td> Name </td>";
        echo "<td> Balance </td>";
        echo "</tr>";

        while($row = mysqli_fetch_array($result))
        {
            $id = $row[0];
            $name = $row[1];
            $balance = $row[2];

            echo "<tr>";
            echo "<td> {$id} </td>";
            echo "<td> {$name} </td>";
            echo "<td> {$balance} </td>";
            echo "</tr>";
        }
        echo "</table>";
    }
}
$bank = new Bank;
$bank->randomize();
$bank->balance();

Результаты следующие (в базе данных 5 пользователей) http://prntscr.com/mf6edg

Это просто идет и уходит.

Я на 100% - это цикл while, но у меня нет знаний о том, как изменить условие внутри него, если кто-то будет достаточно любезен, чтобы выручить меня.

  • 0
    Проблема в том, что запрос, написанный так, будет генерировать все эти результаты. Запустите его в phpMyAdmin или каком-то подобном инструменте, и вы увидите
  • 0
    здесь поможет только таблица transactions , используя JOIN .
Показать ещё 2 комментария
Теги:
loops
while-loop

1 ответ

0

Ваш запрос выберет все строки второй таблицы для каждой строки первой таблицы (ваш выбор производит декартово произведение).

Предполагая, что ваши таблицы связаны ключом, например: user_id, вы должны попробовать соединение

  SELECT * 
  FROM users u 
  INNER transactions t  on u.user_id =  t.user_id 

таким образом, вы должны получить только транзакцию, связанную с конкретным идентификатором пользователя

  • 0
    просто INNER может работать?
  • 0
    Это очень помогло! Спасибо, добрый сэр!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню