我正在尝试在我的数据库中插入名字,姓氏,电子邮件和密码,但我当然希望先准备好该声明。我搜索了谷歌和堆栈,但找不到任何关于插入多列的语法,只有一个。我用什么代替? prepare语句和bind_param()。
这是我的代码:
if(!($sql = $link->prepare("INSERT INTO users(fname, lname, email, password) VALUE(fname=?, lname=?, email=?, password=?))){
echo "Prepare failed: (" . $link->errno . ") " . $link->error;
}
$sql->bind_param('?', $fname);
$sql->bind_param('?', $lname);
$sql->bind_param('?', $email);
$sql->bind_param('?', $hashpass);
$sql->execute();
编辑:它甚至可能吗?我是否必须分开做每一件事?
答案 0 :(得分:2)
您使用的是MySQLi吗?它看起来像你。如果是这样,您只需要调用bind_param
一次,并在SQL的VALUES
部分中插入逗号分隔的问号来表示每一列:
$query = "INSERT INTO users(fname, lname, email, password) VALUE(?, ?, ?, ?)";
if( !$sql = $link->prepare($query) ) {
echo "Prepare failed: (" . $link->errno . ") " . $link->error;
}
$sql->bind_param("ssss", $fname, $lname, $email, $hashpass);
$sql->execute();
有关详细信息,请参阅mysqli bind_param
documentation。
P.S。我稍微清理了一下代码并将SQL放在变量中以使其更清晰。