Есть две строки, которые должны быть напечатаны из моего 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>");
}
}
Причина в том, что ваши переменные внутри цикла
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>");
}
}
Других решений пока нет …