使用预准备语句在MySQL中插入自动增量ID的问题

时间:2014-12-14 08:15:28

标签: php mysql mysqli prepared-statement

我在MySQL数据库中有一个名为MyGuests的表,它有4个字段:id(PK和自动增量),名称,年龄和电子邮件。我使用以下代码将数据从用户输入表单插入数据库:

<?php
$sql = mysqli('localhost','user','password','database');
$name  = $_POST['name'];
$age   = $_POST['age'];
$email = $_POST['email'];

$query = $sql->prepare("INSERT INTO MyGuests ( id, name, age, email) VALUES (?, ?, ?, ?)");

$query->bind_param("isis",$name,$age,$email);

$query->execute();
?>

现在我很困惑如何使用Prepared语句为id插入自动递增字段的值!如您所见,我为(?, ?, ?, ?)传递了4个参数用于数据输入,并将"isis"用于bind_param();但不确定$name,$age,$email必须放入什么内容?

你能帮我解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:3)

只需省略查询中的id,即

INSERT INTO MyGuests ( name, age, email) VALUES (?, ?, ?)

它会自动添加递增的id,因此名称为:)

答案 1 :(得分:0)

另一种选择是向自动增量列提供空值:

即。 代替
$query = $sql->prepare("INSERT INTO MyGuests ( id, name, age, email) VALUES (?, ?, ?, ?)");
使用
$query = $sql->prepare("INSERT INTO MyGuests ( id, name, age, email) VALUES (null, ?, ?, ?)");