0
我是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;
任何幫助將不勝感激。
原來,是的,該代碼特別是正常工作。我所缺少的是語句使用之間的重置,所以在第一次調用時我會檢索該ID並且隨後的調用將失敗。感謝給我一個單獨的,我的代碼的工作塊,以幫助我指導我的搜索:) –