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

我正在尝试从数据库中获取一个值并将其与设置的任何 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 时单独显示描述。


一只甜甜圈
浏览 113回答 2
2回答

小怪兽爱吃肉

您将永远不会看到“您从数据库中单击了某些内容”消息,因为您已经在第一个循环中从查询中获取了结果,请检查这个问题why-cant-i-loop-twice-on-mysqli-fetch-array-results一种选择是将结果保存在数组中,以便稍后在第二个循环中使用//your first loop$savedRows = [];while($row = $result->fetch_assoc()) {&nbsp; &nbsp; $savedRows[] = $row;&nbsp; &nbsp; //the rest of your code}// ......// your second loopif (isset($_POST['submit'])) {&nbsp; &nbsp; foreach($savedRows as $row) {&nbsp; &nbsp; &nbsp; &nbsp; if ($_SERVER["QUERY_STRING"] == $row['id']) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 'you clicked something from the database ' . $id;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}另请注意,如果这是您的实际代码,则需要将 herodoc 的结束标识符作为其 line 上EOT; 的第一个字符,否则文件的其余部分将成为此字符串的一部分

哈士奇WWW

你的答案有很高的时间复杂度你可以很容易地让你&nbsp;SQL查询SELECT&nbsp;id&nbsp;FROM&nbsp;items&nbsp;WHERE&nbsp;id&nbsp;=&nbsp;?如果行号是0这意味着没有记录,id&nbsp;您可以从中检查行号num_rows
打开App,查看更多内容
随时随地看视频慕课网APP