php - 防止重复行插入 php/mysql

标签 php mysql

我正在尝试将文本框中的多条记录插入到 mysql 表中。 如果我输入超过 2 条记录,则会插入重复项。 这是代码。 我做错了什么?

更多信息

表格信息

id (int) primary auto_increment
email (varchar)
imei (varchar)
date_ordered (datetime)
status(varchar)

由于这只是开始,所以我对更改表结构没有任何问题。

$email = $_SESSION['email'];
$now = time():
$status = "1";

$imeis = $_POST['imeis'];
$row = explode("\n", $imeis);

foreach ($row as $key => $imei)
{
    $imei = mysql_real_escape_string($imei);

    $query = "SELECT * FROM orders WHERE imei = '$imei'";
    $result = mysqli_query($link, $query);

    if (mysqli_num_rows($result) == 0)
    {
        $query1 = "INSERT IGNORE INTO orders (email, imei, date_ordered, status) VALUES ('$email', '$imei', '$now', '$status')";
        $result1  = mysqli_query($link, $query1) OR die("fml");

        if ($result1)
        {   
            echo "Added $imei<br>";
        }
    }

    else
    {
        echo "<B>$imei</B> already there<br>";
    }

}

最佳答案

您似乎希望表中的每个 imei 值都是唯一的。这是一个猜测,但看起来就像您正在做的事情。

您可以在 SQL 中通过将 imei 列定义为唯一来实现此目的:即通过在其上创建唯一索引。您当前的表有一个 id 作为唯一(主)键。您可以轻松创建另一个。

关于php - 防止重复行插入 php/mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47616728/

相关文章:

MySQL slave 复制 - master 后面的 slave - 如何加速?

php - 如何对数据库表中的列进行求和,但将通过 3 个不同的行组获得总结果

php 不会回显内部连接查询的结果

mysql - ASP.Net 表的多个文本框 Controller

php - 从地址获取州和县

php - 按另一个数组的键对数组排序

php - 找不到 Wordpress 错误 404

php - MySQL 按天分组,带有 TIMESTAMP 列

mysql - 如何将参数传递给函数?

HTML 对比 SHTML 对比 PHTML