php - 有什么方法可以修复此代码以避免错误 : Duplicate entry '1' for key 'PRIMARY' each time

标签 php mysql primary-key

if(isset($_POST['submit']))
{
    if ($firstName&&$lastName&&$email!=""){
    try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql= "UPDATE abonnenter SET id = (id+1)";
    $conn->exec($sql);
    $sql = "INSERT INTO abonnenter (id,firstname,lastname,mail)
    VALUES (id,'$firstName','$lastName', '$email')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "Du blir nå sendt en mail når bloggen oppdateres";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
    }
}

是代码。当我的 id get -1 而不是 +1 时它可以工作,但是在保持代码语义方面将主键 id 列为负数似乎非常糟糕

最佳答案

使 id 自动递增。并更新您的 sql 查询,例如

$sql = "INSERT INTO abonnenter (firstname,lastname,mail)
VALUES ('$firstName','$lastName', '$email')";

您的代码也可以使用 pdo 或准备好的语句进行 SQL 注入(inject)

关于php - 有什么方法可以修复此代码以避免错误 : Duplicate entry '1' for key 'PRIMARY' each time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59551913/

相关文章:

mysql - 在 SQL 语句中插入 "WHERE"条件的位置

java - 使用Java获取MySQL表中的所有主键

MySQL 从一个表中返回不同的帐户,从另一个表中返回平均评分,所有这些都基于另一个表中的服务区域

php - Codeigniter- 即使在页面加载或刷新时也将空白行插入到 mysql 中

primary-key - 使用 Entity Framework Core Migrations 更改主键

Codeigniter MY_Model 复合主键

php - 如果未选中复选框,则出现错误 "Undefined index"

php - 使用php写入属于不同用户的目录中的文件

php - PDO 插入值

php - 如何在 Yii2 中使用 GridView 上的按钮选项