Почему я получаю только одну строку из моего sql?

Есть две строки, которые должны быть напечатаны из моего sql.

Акции Symbol ID
3 CSCO 40
3 FB 200

но этот код печатает только первый ряд дважды. Как это:
jharvard владеет 40 акциями CSCOjharvard владеет 40 акциями CSCO

Зачем?

Спасибо заранее.

$users = query("SELECT * FROM users WHERE id = ?", $_SESSION["id"]);
$rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);

$stock = $rows[0];
$username = $users[0];

foreach ($rows as $row)
{
if( $stock["id"] === $_SESSION["id"])
{
print("<td>" . $username["username"] . "   has   "  . $stock["Shares"] .   "   shares of   "   . $stock["Symbol"] . "</td>");
}
}

1

Решение

Причина в том, что ваши переменные внутри цикла

foreach ($rows as $row) {
if( $stock["id"] === $_SESSION["id"]) {
print("<td>" . $username["username"] . "   has   "  . $stock["Shares"] .   "   shares of   "   . $stock["Symbol"] . "</td>");
}
}

Вы печатаете значение $stock, который вы ранее определили:

$stock = $row[0];

Так будет всегда вывести данные из первого ряда.

Я подозреваю, что вы хотите изменить свой цикл следующим образом:

foreach ($rows as $row) {
// Changed from $stock['id'] to $row['id']
if( $row["id"] === $_SESSION["id"]) {
// Changed from $stock['Shares'] and ['Symbol'] to $row['Shares'] and ['Symbol']
print("<td>" . $username["username"] . "   has   "  . $row["Shares"] .   "   shares of   "   . $row["Symbol"] . "</td>");
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]