【问题标题】:How do I prevent my 'insert' query from inserting duplicates in mariadb?如何防止我的“插入”查询在 mariadb 中插入重复项?
【发布时间】:2021-11-23 09:18:15
【问题描述】:

我编写此代码是为了通过表单收集帖子信息并将其插入到我的数据库中,它确实在完成它的工作。问题是每次执行代码时,它都会插入从表单中获取的信息的多个副本。知道如何阻止这种情况发生吗?这是上下文的代码 sn-p:

$query= $connect->prepare("insert into posts (title,date,author,content,image) values('$title','$date','$author','$content','$fileNameNew');");
$query->execute();

if($query->execute()){
    echo('POST UPLOADED SUCESSFULLY');
    $query->close();  
}else{
    echo('POST UPLOADED HAS FAILED');
}

【问题讨论】:

  • 此代码无法做到这一点。由于某种原因,您必须多次运行它。
  • 如果您使用 AJAX 提交数据,请确保您已禁用默认表单提交。
  • 如果您使用的是传统表单,请在提交表单后重定向到页面以清除请求中的帖子数据。
  • @waterloomatt 只是这样做了,它仍然不断上传重复
  • 我不敢相信我自己没有注意到这一点——我以前见过这个错误几十次。

标签: php duplicates mariadb sql-insert


【解决方案1】:

为了防止插入重复,您可以使用下一个代码:

$query = $connect->prepare("insert into posts (title,date,author,content,image) values(?, ?, ?, ?, ?);");

if($query->execute([$title,$date,$author,$content,$fileNameNew])){
    echo('POST UPLOADED SUCESSFULLY');
}else{
    echo('POST UPLOADED HAS FAILED');
}

PHP PDO test online

此代码还使用准备好的语句中的参数来防止 SQL 注入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 2021-03-27
    • 1970-01-01
    • 2021-09-25
    • 2016-02-19
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多