gpt4 book ai didi

php - 如何从 PHP 数组更新数据库表数据?

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:06 26 4
gpt4 key购买 nike

我需要从 php 数组更新 mysql 表数据库的信息。

我正在寻找执行此操作的最佳方法,我想做的是用新信息更新现有数据库表,这意味着可能会有新行,现有行可能在其字段中有新值, 或删除的行。

我想到的方法是:

  1. 从当前表中删除所有数据和行,并再次插入包含 php 数组提供的最新数据的所有行。但我不知道这是一种昂贵的方法还是确实被使用了。
  2. 我的另一个想法是,也许我可以检查行中的字段值是否已更改,如果是这种情况,则更新值,还检查行的顺序以检查是否删除了某些行以及顺序已更改,如果是这样,最后插入新行,但我认为这会变得非常棘手和困惑。

你怎么看?一些更好的方法的想法?感谢您的支持。

最佳答案

您可以使用 INSERT ... ON DUPLICATE KEY UPDATE INSERT 新行和 UPDATE 现有行。

示例:

INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE a=1,b=2,c=3;

你必须在 php 中使用一些技巧来构建 DELETE 语句。

示例:

<?php

$data = array(
array( 'a'=>1, 'b'=>2, 'c'=>3 ),
array( 'a'=>4, 'b'=>5, 'c'=>6 ),
array( 'a'=>7, 'b'=>8, 'c'=>9 ),
);

$condition = implode( ',', array_map( function($temp){return sprintf("('%s','%s','%s')",$temp['a'],$temp['b'],$temp['c']);},$data));
$sql = "DELETE FROM t1 WHERE (a,b,c) NOT IN (" . $condition . ");";
echo $sql; // DELETE FROM t1 WHERE (a,b,c) NOT IN (('1','2','3'),('4','5','6'),('7','8','9'));

// OR

$condition1 = implode( ',', array_map( function($temp){return sprintf("'%s'",$temp['a']);},$data));
$sql1 = "DELETE FROM t1 WHERE a NOT IN (" . $condition1 . ");";
echo $sql1; // DELETE FROM t1 WHERE a NOT IN ('1','4','7');

?>

关于php - 如何从 PHP 数组更新数据库表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900085/

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