首先呼叫到prepare()
失敗,因爲你的INSERT
說法是錯誤的。如果你想有錯誤搬運就位,那麼你會得到這個錯誤信息
列計數不匹配值在第1行
在列列表的列數計數應匹配的數量列在VALUES
部分。因此改變
INSERT INTO accounts (id,name,email,password) VALUES (?,?,?)
^^^
到
INSERT INTO accounts (name,email,password) VALUES (?,?,?)
其次bind_param()
結合變量到標記物,這意味着它需要以引用的方式傳遞的參數。因此,您的代碼應該看起來像這樣
$db = new mysqli('localhost', 'user', 'password', 'dbname');
if ($db->connect_errno) {
die('Connection failed: %s\n' . $db->connect_error); //TODO better error handling
}
$sql = 'INSERT INTO accounts (id, name,email,password) VALUES (?,?,?)';
$stmt = $db->prepare($sql);
if (!$stmt) {
die('Can\'t prepare: ' . $db->error); //TODO better error handling
}
$name = 'mukur';
$email = 'hotmail';
$password = 'grapes';
$stmt->bind_param('sss', $name, $email, $password);
$stmt->execute();
$stmt->close();
$db-close();
改變了代碼,但仍得到相同的錯誤 – Zafta
@Mukurpuri嘗試改變你的代碼,我建議包括錯誤處理。如果您在發佈後發現錯誤, – peterm
thanx peterm,錯誤實際上是我愚蠢的錯誤,但你的回答真的幫了我。 – Zafta