【问题标题】:Insert multiple records into table when there is a unique field当存在唯一字段时将多条记录插入表中
【发布时间】:2018-07-24 13:39:55
【问题描述】:

我有一个表单,可以将唯一代码插入到通过 php 生成的表中。当只有一个时它可以工作,但是当我同时插入两个时,我得到了一个重复的错误。

if (!empty($_SESSION["cart_item"])) {

  $orderreference = $_SESSION['ref'];

  foreach ($_SESSION["cart_item"] as $item) {

        if($item['isVoucher'] == 1){

        $insertQuery = ("INSERT INTO `bookings_css_codes` 
                                (`id`, `code`, `price`, `per`, `status`, 
                                `expiry_date`, `usage`, `is_used`) 
                        VALUES ('', '$randomsA', '$item[ProductPrice]', 'amount', 'T', 
                                '$oneYearOn', 'single', '0');");

        if (!$db->query($insertQuery)) {
            die('Error: ' . $db->error);
       }

    }

【问题讨论】:

  • 先检查是否存在,或者试试INSERT ... ON DUPLICATE KEY UPDATE。很难说是否允许重复。
  • 如果一个字段被索引为唯一,你根本不能插入两个具有相同值的记录。这就是首先将其定义为“独特”的原因。你到底想做什么?预期的结果是什么?如果您详细说明您的应用程序,我们可以查看您是否需要更新和规范您的数据库设计。
  • 有什么问题?在这种情况下,错误是绝对正确的行为。
  • 哪些列在此表上应该是唯一的?
  • 好吧,根据您显示的这段代码,您不会在循环迭代之间更改 $randomsA 中的值

标签: php mysql session


【解决方案1】:

你可以试试

insert in "field name"("value1","value2",...."valuen");

【讨论】:

  • 你能说得清楚一点吗? OP 应该尝试什么?
  • 插入“表名”“列名”('value1,'vaslue2');
  • 你这是什么意思?这与原始查询有何不同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
相关资源
最近更新 更多