使用预准备语句在 MySQL 中插入自动递增 ID 时出现问题


Issue On Inserting Auto Incremented ID in MySQL Using 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();
?>

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

你能帮我弄清楚吗?

谢谢

只需省略查询中的id,即

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

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

另一个选项是向自动增量列提供空值:

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