php - MySQL中如何添加记录而不导致重复?

标签 php mysql

我正在使用 MySQL 和 PHP。在 MySQL 中,如何使用附加记录更新现有表而不导致重复?这些记录是客户,每条记录的关键是客户帐号,例如“1234”。

我基本上需要做三件事。如果客户帐户不存在,则添加新的客户记录;如果现有客户的电话号码或电子邮件地址已更改,则更新其信息;如果客户不再是客户,则删除客户记录。

数据以每日提要的形式出现,营销部门希望拥有自己的客户数据库,并添加自己的字段,这就是为什么我不简单地从每日提要重新创建数据库的原因。目标是使其与提要保持同步。谢谢!

最佳答案

我建议您使用 PHP 进行所有处理。

当您循环访问客户记录时,首先检查该记录是否存在:

$query = "SELECT customer_account_number FROM table WHERE customer_account_number = 1234";
$result= $mysql -> query($query);
$num   = $result -> num_rows;

if($num == 1){
   // The record already exists so you update.
   $update_query = "UPDATE table SET some_field = 'Some Value' WHERE customer_account_number = 1234";
   $update_result= $mysqli -> query($update_query);
}else{
   // The record doesn't exist so create a record.
   $insert_query = "INSERT INTO table (customer_account_number) VALUES (1234)";
   $insert_result= $mysqli -> query($insert_query);
}

或者,您可以执行一个选择查询来获取客户帐号并将其弹出到数组中。

$query = "SELECT customer_account_number FROM table";
$result= $mysql -> query($query);
$num   = $result -> num_rows;

while($row = $result -> fetch_array(MYSQLI_ASSOC)){

   $cust_records[] = $row['customer_account_number'];

}

// Then for each customer record your looping through.

if(in_array($customer_record_id, $cust_records)){
    // It exists - so just update
    $update_query = "UPDATE table SET some_field = 'Some Value' WHERE customer_account_number = 1234";
    $update_result= $mysqli -> query($update_query);
}else{
    // Doesn't exist - insert
    $insert_query = "INSERT INTO table (customer_account_number) VALUES (1234)";
    $insert_result= $mysqli -> query($insert_query);
}

此外,正如 Tadman 所建议的,如果您确保客户帐号是唯一列,那么这将增加额外的保护,以确保无法添加重复项。

关于php - MySQL中如何添加记录而不导致重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221518/

相关文章:

php - 搜索文档日期低于日期选择器中所选日期的所有记录

php - PHP mysqli 中的存储过程和准备语句

Mysql 左外连接需要很长时间才能从 php 响应

nginx - php-fpm 进程监控/分析

php - 从 Visual Studio Code、Dot Net 连接 MySQL Db

javascript - 错误请求 :Error function and timeout in ajax never fired

MySQL按时间段对结果进行分组

php - Zend Framework mysql查询返回服务器500错误

javascript - 客户端和服务器端编程有什么区别?

javascript - PHP PDO 循环在 JS 和 PHP 中不同