gpt4 book ai didi

php - 在表中插入新行和自动 ID 号

转载 作者:可可西里 更新时间:2023-11-01 07:46:28 24 4
gpt4 key购买 nike

我想在我的表格中插入一个新行。我希望 id 自动生成,而不是向用户询问。用户只提供titletext。我用 PHP 编写了这段代码:

<?php
$hostname = "localhost";
$database = "mydb";
$username = "myuser";
$password = "mypsw";
$link = mysql_connect( $hostname , $username , $password ) or
die("Attention! Problem with the connection : " . mysql_error());
if (!$link)
{
die('Could not connect: ' . mysql_error());
}
mysql_query("SET NAMES ‘utf8’",$link);
mysql_select_db("mydb", $link);
$lastid=mysql_insert_id();
$lastid=$lastid+1;
$sql="INSERT INTO announcements VALUES ('$lastid',CURDATE(),'$_POST[title]','$_POST[text]')";
if (!mysql_query($sql,$link))
{
die('Error: ' . mysql_error());
}
mysql_close($link);
header("Location: announcement.php");
?>

可悲的是,当我在我的网站上测试它时,我得到了这个错误:

Error: Duplicate entry '0' for key 'PRIMARY'

mysql_insert_id() 不工作吗?怎么了?

最佳答案

不要这样做。 mysql 会很乐意为您创建一个 auto_increment 列:

CREATE TABLE x (
id int not null primary key auto_increment
^^^^^^^^^^^^^^---add this to your PK field
);

INSERT INTO x (id) VALUES (null); // creates id = 1
INSERT INTO x (id) VALUES (null); // creates id = 2

mysql_insert_id() 只返回当前连接创建的最后一个 ID。第一次运行时您还没有插入任何数据,因此您什么也得不到。

您的版本极易受到竞争条件的影响。无法保证您使用 mysql_insert_id() 检索到的最后一个 ID 也不会被并行运行的脚本的另一个副本检索到,并从此脚本副本下被剪掉。

关于php - 在表中插入新行和自动 ID 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9318826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com