如果找到重复值,则增加列值

时间:2016-11-21 14:42:43

标签: php mysql sql

我有一个非常简单的脚本,可以导入邮政编码的CSV并在表格中用它创建一行。

我还有一列用于存储邮政编码在CSV文件中显示的total次。

如果找到重复的邮政编码,是否可以增加列值?

因此,如果有2个 w1a 1aa 的实例,它会增加总列中的值。例如:

id | postcode | total
0  |  w1a 1aa | 2
1  |  g74 1bc  | 1
2  |  ml10 6qd  | 1

非常感谢您对此的任何帮助。

表格

id | postcode | total

PHP:

// connect to db
$servername = "localhost";
$username = "";
$password = "";
$dbname = "postcodes";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

foreach($csv as $row) {

    $postcode = $row[0];

    $sql = 'INSERT INTO postcodes VALUES (NULL, "'.$postcode.'", 1)';

    if (mysqli_query($conn, $sql)) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

}

2 个答案:

答案 0 :(得分:1)

MySQL允许你输入类似下面的内容(现在无法检查语法,但你会发现它在互联网上有很好的记录):

INSERT ... ON DUPLICATE KEY UPDATE...

这意味着,尝试将一行插入到具有特定列作为唯一键的表中,如果存在具有相同键值的行,则执行更新部分。

因此,如果您将列邮政编码定义为唯一索引,则上述结构将完全符合您的要求。

答案 1 :(得分:0)

您需要先选择一个选项来检查您要输入的邮政编码是否已经存在,如果是,请获取计数并根据该邮政编码进行更新。