我刚接触使用PHP foreach
,所以这可能是显而易见的,因为这个脚本无法正常工作。我正在尝试向登录用户显示队友名单。
此处的目标是我尝试将用户名列表添加到<li>
标记中,此文件将包含在<ul>
中。我的想法是查看TeamPlayer
表并获取与登录用户当前会话变量UserIDs
匹配的所有TeamID
,然后使用{JOIN
{1}}表获取匹配的所有UserInfo
的{{1}}记录。将结果放入一个数组中,然后生成这些项的列表以显示给用户。
似乎无法找到我出错的地方。
FullName
答案 0 :(得分:1)
你可以试试这个。
$query_team = "SELECT UserInfoTable.*, TeamPlayerTable.*
FROM Team AS TeamPlayerTable
JOIN UserInfo AS UserInfoTable
ON TeamPlayerTable.UserID = UserInfoTable.UserID
WHERE TeamPlayerTable.TeamID = '$teamID'";
答案 1 :(得分:0)
您正在使用FROM两次,更改:
...
FROM Team AS TeamPlayerTable
FROM UserInfo AS UserInfoTable
...
要
...
FROM Team AS TeamPlayerTable
JOIN UserInfo AS UserInfoTable
...
答案 2 :(得分:0)
首先,使用实际的JOIN
并为您的$teamID
值准备一个包含占位符的语句...
$stmt = $dbhandle->prepare('
SELECT UserInfo.FullName
FROM UserInfo
INNER JOIN TeamPlayer
ON UserInfo.UserID = TeamPlayer.UserID
WHERE TeamPlayer.TeamID = ?
'); // THIS IS LITERAL CODE, QUESTION MARK AND ALL
// Check for errors
if (!$stmt) {
throw new Exception($dbhandle->error, $dbhandle->errno);
}
这可以避免任何SQL注入漏洞。
然后绑定值(假设它是一个整数),执行语句并绑定结果...
$stmt->bind_param('i', $teamID);
if (!$stmt->execute()) {
throw new Exception($stmt->error, $stmt->errno);
}
$stmt->bind_result($fullName);
你没有拥有来使用结果绑定,但我发现这是最好的方法。
现在循环结果......
?>
<ul>
<?php while ($stmt->fetch()) : ?>
<li><?= htmlspecialchars($fullName) ?><?li>
<?php endwhile ?>
</ul>
<?php
$stmt->close();
进一步阅读 - http://php.net/manual/mysqli.quickstart.prepared-statements.php
答案 3 :(得分:-1)
与Sudhir的回答一起,您可能想要调整foreach()循环。我建议:
foreach($array as $key => $value) {
echo "<li>".$value."</li>";
}