为了账号安全,请及时绑定邮箱和手机立即绑定

试图从 url 之后比较数据库中的值?

试图从 url 之后比较数据库中的值?

PHP
一只甜甜圈 2022-01-08 17:46:17
我正在尝试从数据库中获取一个值并将其与设置的任何 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; 的第一个字符,否则文件的其余部分将成为此字符串的一部分


查看完整回答
反对 回复 2022-01-08
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

你的答案有很高的时间复杂度你可以很容易地让你 SQL查询

SELECT id FROM items WHERE id = ?

如果行号是0这意味着没有记录,id 您可以从中检查行号num_rows


查看完整回答
反对 回复 2022-01-08
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信