在我的代码中,我在MySQL表中插入一行,如果它不存在的话。由于查询需要唯一索引,我只是插入$id
,这只是1
的静态值(第8行)。
public function prepare($author, $arr) {
$conn = new mysqli($this->servername, $this->username, $this->password, $this->db_name);
foreach ($arr as $value) {
$stmt = $conn->prepare("INSERT IGNORE INTO kh_comments(id, author,abstract) VALUES (?, ?, ?)");
$id = 1; // Just a static value
$stmt->bind_param("dss", $id, $author, $value['id']);
$stmt->execute();
$stmt->close();
$conn->close();
}
}
我现在想要使用动态值而不是1
。变量$id
应该足够聪明,以确定哪个ID受到影响。或者,如果有其他方法可以做到这一点,我感谢任何建议!
答案 0 :(得分:1)
在MySQL中,您可以使用create table
或alter table
命令中的AUTO_INCREMENT属性定义auto increment个字段:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
在插入过程中,您只是不为该列分配任何值,MySQL将自动为您分配其值:
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
正如链接文档所说:
您可以使用LAST_INSERT_ID()SQL函数或mysql_insert_id()C API函数检索最新自动生成的AUTO_INCREMENT值。这些函数是特定于连接的,因此它们的返回值不受另一个也执行插入的连接的影响。
在mysqli中使用mysqli_insert_id() function来检索此值。
答案 1 :(得分:0)
id具有AUTO_INCREMENT值。您不必为其设置值。我想这是你的问题。