PHP PDO select 数据库中与变量匹配的条目

PHP PDO select entry from database that matches a variable

我已经查看了此处关于此问题的其他一些答案,但我一直收到错误,所以这里继续。

每当用户访问该站点时,系统都会要求他们提供姓名并分配一个随机整数。当他们点击提交输入他们的名字时,表单被提交并保存到数据库中,用户被重定向回主页。如果随机数再次与数据库中保存的数字匹配,则会显示该名称。

我可以毫无问题地将值插入数据库,但我在将它们取回时遇到一些问题。

我与数据库的连接很好,只是为了这个问题的目的保留了通用值。

<?php
    $min=1;
    $max=100;
    $rand_number = rand($min,$max);

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        //Set PDO Error Mode to Exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        //Prepare SQL
        $stmt = $conn->prepare("select nickname from users where number=".$rand_number);
        $stmt->execute();

        if (!$stmt) {
            foreach($result as $row) {
                    echo $row['nickname'];
            }
        }
    }
?>

我收到一条错误消息,指出我将查询与变量匹配的部分有问题。

我真正认为缺少的唯一一件事是您将在哪里获取数据。您可以使用 PDOStatementfetch* 方法之一,或者简单地迭代语句本身(它实现 Traversable)。

此外,您应该使用参数绑定。

$stmt = $conn->prepare('SELECT `nickname` FROM `users` WHERE `number` = ?');
$stmt->execute([$rand_number]);
while($nickname = $stmt->fetchColumn()) {
    echo $nickname;
}