准备好的声明&选择,找到0行


Prepared statements & select, 0 rows found

好的,所以我的问题很简单,我试图从查询中获得结果,但它总是返回没有用户注册的用户名。

<?php 
    require "assembly/oop/sql_classbuild.php";
    class player {
        private $name;
        private $age;
        private $gender;
        private $location;
        public function createNew($name, $age, $gender, $location) {
            $conni = new sql();
            $conn = $conni->connect();
            $stmt = $conn->prepare("INSERT INTO players (name, age, gender, location) VALUES (?,?,?,?)");
            $stmt->bind_param("siss", $name, $age, $gender, $location);
            $this->name = $name;
            $this->age = $age; 
            $this->gender = $gender;
            $this->location = $location;
            $stmt->execute();
            $stmt->close();
            $conn->close();
        }
        public function isRegistered($name) { //problematic code
            $conni = new sql();
            $conn = $conni->connect();
            $stmt = $conn->prepare("SELECT name FROM players WHERE name=?");
            $stmt->bind_param("s", $name);
            $stmt->execute();
            if($stmt->num_rows >= 1) { //if there is a registered member
                $stmt->close();
                $conn->close();
                return true;
            }
            else {
                $stmt->close();
                $conn->close();
                return false;
            }
        }
    }

?>

现在我也试图打印num_rows,但它只是返回0,如果没有DB内的结果。用法很简单

if($player->isRegistered("Test") == true) {
        echo "Hello";
    }
    else {
        echo "Non-existing user";
    }

SQL截图https://i.stack.imgur.com/lMqub.jpg这是sql类pastebin.com/Evg13CUc

问题已解决。我使用$stmt->store_result();不知何故,这给了我很好的结果。