У меня есть 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, но у меня нет знаний о том, как изменить условие внутри него, если кто-то будет достаточно любезен, чтобы выручить меня.
Ваш запрос выберет все строки второй таблицы для каждой строки первой таблицы (ваш выбор производит декартово произведение).
Предполагая, что ваши таблицы связаны ключом, например: user_id, вы должны попробовать соединение
SELECT *
FROM users u
INNER transactions t on u.user_id = t.user_id
таким образом, вы должны получить только транзакцию, связанную с конкретным идентификатором пользователя
INNER
может работать?
phpMyAdmin
или каком-то подобном инструменте, и вы увидитеtransactions
, используяJOIN
.