为多列准备插入语句

时间:2014-06-24 22:39:04

标签: php sql prepared-statement

我正在尝试在我的数据库中插入名字,姓氏,电子邮件和密码,但我当然希望先准备好该声明。我搜索了谷歌和堆栈,但找不到任何关于插入多列的语法,只有一个。我用什么代替? 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();
编辑:它甚至可能吗?我是否必须分开做每一件事?

1 个答案:

答案 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放在变量中以使其更清晰。