首先,调用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();