私は 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
私は何か間違ったことをしていると確信しています (誰のせいでもなく、プログラミングにおける自分自身のせいです) が、それを見つけることができないようです。どんな助けでも大歓迎です。
参考までに、users テーブルの作成に使用する 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;
どんな助けでも大歓迎です。