gpt4 book ai didi

PHP foreach 循环数组

转载 作者:行者123 更新时间:2023-11-29 06:33:26 24 4
gpt4 key购买 nike

我有一个脚本,它在排行榜上显示用户信息。它通过“registrations”表获取每个用户的显示信息,如顶部 SQL 所示,但他们的后端信息(用户名、用户 ID、IP 地址等)存储在“users”表中。注册表有一列“user_id”,我试图将其与用户表链接,该表可以在 foreach 之后看到。 .

目标是为每个用户显示用户名(存储在“users”中) - 显示在 <td class='center'>" . $userdata['username'] . "</td> 。但是,用户名未显示。

在底部,我尝试将记录插入到另一个表中,该表也使用相同的用户名值,但它作为空字符串插入。请注意INSERT应该只为被点击的用户插入......这可以实现吗?

-此外,我知道这个 PHP 不是最好的,应该使用准备好的语句等,但这不是目前的目标。

<?php
$sql = mysqli_query($DB, "SELECT * FROM registrations LIMIT 5");

foreach ($sql as $row)
{
$userdata = mysqli_fetch_assoc(mysqli_query($DB, "SELECT * FROM users WHERE id='" . $row['user_id'] . "'"));
echo "
<tr class='gradeX'>
<td class='center'>" . $userdata['username'] . "</td>
<td class='center'>" . $row['balance'] . "</td>
<td class='center'>" . $row['wins'] . " - " . $row['losses'] . "</td>
<td class='center'><form method='post' action=''><input type='submit' class='btn btn-success' name='invite' value='Request Game'/></form></td>
<td class='center'><a href='' class='btn btn-success'>WATCH STREAM</a></td>
</tr>";
}

if (isset($_POST['invite']))
{
$query = "INSERT INTO matches (id,sender,receiver,time,console,rank_sender,rank_receiver,status) values ('0', '" . $_SESSION['username'] . "', '" . $userdata['username'] . "', '" . time() . "', '" . $row['type'] . "', '" . $GETD['rank'] . "', '$rank', 'pending')";
mysqli_query($DB, $query);
}
?>

感谢您的帮助:)

最佳答案

使用JOIN,您可以执行单个查询并获取所需的数据。我还将其转换为使用准备好的语句 - 即使查询中没有变量,它也应该在标准 mysqli::query() 方法上使用。

您的 INSERT 查询完全没有意义(根据问题中的变量判断),因此您应该查看变量并将它们设置为应有的样子(您的代码问题中将插入最后获取的用户名的用户名,这不一定是您期望的值)。

我还从 INSERT 查询中删除了您的 id,这应该是您的 matches 表中的自动增量。

您需要为该行附加注释中带有 TODO 的行分配正确的值。

$stmt = $DB->prepare("SELECT u.username, r.balance, r.wins, r.losses
FROM registrations r
JOIN users u
ON u.id=r.user_id
LIMIT 5
");
$stmt->bind_result($username, $balance, $wins, $losses);
$stmt->execute();

while ($stmt->fetch()) {
?>
<tr class='gradeX'>
<td class='center'><?php echo $username; ?></td>
<td class='center'><?php echo $balance; ?></td>
<td class='center'><?php echo $wins; ?> - <?php echo $losses; ?></td>
<td class='center'>
<form method='post' action=''>
<input type='submit' class='btn btn-success' name='invite' value='Request Game'/>
</form>
</td>
<td class='center'><a href='' class='btn btn-success'>WATCH STREAM</a></td>
</tr>
<?php
}
$stmt->close();

if (isset($_POST['invite'])) {
// Assign the variables here.
$username_sender = 'somevalue'; // TODO: Define this.
$time = time();
$rank_sender = $GETD['rank'];
$rank_receiver = $rank; // TODO: Define this.
$console = $type; // TODO: Define this.
$status = 'pending';

$stmt = $DB->prepare("INSERT INTO matches (sender, receiver, time, console, rank_sender, rank_receiver, status)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssss", $_SESSION['username'], $username_sender, $time, $console, $rank_sender, $rank_receiver, $status);
$stmt->execute();
$stmt->close();
}

关于PHP foreach 循环数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55115106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com