我是 mysqli 的新手,并以面向对象的方式使用 PHP,但在使用准备好的语句检索值时遇到问题。我有一个 PHP 类,它有一个变量:
var $getUsernameStatement;
在施工期间,我准备了声明:
$this->getUsernameStatement = $this->db->prepare("SELECT username FROM users WHERE id = ?;");
然后,稍后,我用它检索一个值:
function getUsername($userID) {
$this->getUsernameStatement->bind_param("i", $userID);
$this->getUsernameStatement->execute();
$this->getUsernameStatement->bind_result($username);
if($this->getUsernameStatement->fetch()) {
echo("Retrieved username " . $username);
} else {
echo("Nope!");
}
return $username;
}
至少这是计划。当我像这样传入一个已知的好 ID 时,我似乎没有得到任何值:
$user->getUsername(2); // There exists an entry with id 2 in the table
我确定我做错了什么(没有人可以责怪,而是自己在编程中),但我似乎无法发现它。任何帮助将不胜感激。
作为参考,这里是用于创建用户表的 SQL:
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(64) NOT NULL ,
`email` VARCHAR(128) NOT NULL ,
`password_hash` VARCHAR(128) NOT NULL ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) ,
UNIQUE INDEX `email_UNIQUE` (`email` ASC) ,
UNIQUE INDEX `username_UNIQUE` (`username` ASC) );
SQL;
任何帮助将不胜感激。