gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:12:36 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com