我正在尝试从数据库中获取一个值并将其与设置的任何 id href 进行比较。但什么也没有发生。<?php$servername = "127.0.0.1";$username = "root";$password = "";$dbname = "products";$conn = new mysqli($servername, $username, $password, $dbname);if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);}$sql = "SELECT id FROM items";$result = $conn->query($sql);if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $id = $row["id"]; echo <<<EOT <br> <form action='index.php?$id' method="POST"> <input type='submit' name="submit" value="more"> </form> EOT; }} else { echo "0 results";}if (isset($_POST['submit'])) { while($row = $result->fetch_assoc()) { if ($_SERVER["QUERY_STRING"] == $row) { echo 'you clicked something from the database' . $id; } }}$conn->close();?>尝试最终从数据库中获取一个值,然后在单击更多 href 时单独显示描述。
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您将永远不会看到“您从数据库中单击了某些内容”消息,因为您已经在第一个循环中从查询中获取了结果,请检查这个问题why-cant-i-loop-twice-on-mysqli-fetch-array-results
一种选择是将结果保存在数组中,以便稍后在第二个循环中使用
//your first loop
$savedRows = [];
while($row = $result->fetch_assoc()) {
$savedRows[] = $row;
//the rest of your code
}
// ......
// your second loop
if (isset($_POST['submit'])) {
foreach($savedRows as $row) {
if ($_SERVER["QUERY_STRING"] == $row['id']) {
echo 'you clicked something from the database ' . $id;
}
}
}
另请注意,如果这是您的实际代码,则需要将 herodoc 的结束标识符作为其 line 上EOT; 的第一个字符,否则文件的其余部分将成为此字符串的一部分
哈士奇WWW
TA贡献1799条经验 获得超6个赞
你的答案有很高的时间复杂度你可以很容易地让你 SQL
查询
SELECT id FROM items WHERE id = ?
如果行号是0
这意味着没有记录,id
您可以从中检查行号num_rows
- 2 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消