我目前正在尝试在与特定用户相关联的表中返回所有结果(使用会话变量标识该用户,该部分正在工作),然后将这些结果中的每一个传递给另一个表,将结果打印给用户。
当前,我的系统正在运行,但是它仅处理第二个查询中原始查询的第一个结果,而不是第一个查询的每个结果。
我当前的代码:
<?php
$conn = new mysqli("localhost", "root", "", "tcom");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$uid = $_SESSION['userID'];
$sql = "SELECT * FROM core_apps_owned WHERE UserID = $uid";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$app = $row["AppID"];
$sql = "SELECT * FROM core_apps WHERE AppID = $app";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<li>".$row["icon"]."</li>";
}
} else {
echo "Error Unable to find app $app";
}
}
} else {
echo "No Owned Apps!";
}
$conn->close();
?>
我还应该提到我的名字很差,而且我通过root连接时的安全性也很差,可维护性也很差,但是,一旦我的系统正常工作,所有这些都将得到修复。
这些是我的桌子:
core_apps_owned:
UserID | AppID
-------+-------
4 | 3
7 | 9
4 | 9
4 | 2
core_apps:
AppID | name | icon
------+----------+------
3 | TestApp3 | 3
9 | TestApp9 | 9
答案 0 :(得分:0)
您要覆盖$result
变量。只需使用其他变量,就可以了:
$app = $row["AppID"];
$sqlApp = "SELECT * FROM core_apps WHERE AppID = $app";
$resultApp = $conn->query($sqlApp);
答案 1 :(得分:-1)
您已使用SQL查询声明了一个变量,并且必须从中获取数据,在同一块语句中,您声明了一个具有相同名称的新变量,第一个结果中的包含将被结果查询替换在第二个查询中,这是不正确的,您应该使用不同的变量名来保存第一个结果