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

朋克代码

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

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

我正在考虑的方法是:

  1. 清除当前表中的所有数据和行,然后再次插入php数组提供的具有最新数据的所有行。但是我不知道这是一种昂贵的方法还是确实使用了它。
  2. 我的另一个想法是,也许我可以检查行中的字段值是否已更改,如果是大小写更新,则可以检查这些值,还可以检查行的顺序以检查是否删除了某些行并且更改了顺序,最后,如果是这种情况,最后插入新行,但是我认为这确实很棘手和混乱。

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

幼稚的

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

例:

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

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

例:

<?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');

?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章