我需要从php数组更新mysql表数据库的信息。
我正在寻找执行此操作的最佳方法,我想做的是使用新信息更新现有的数据库表,这意味着可能会有新的行,现有的行中可能会有新的值字段或删除的行。
我正在考虑的方法是:
您怎么看?一些更好的方法的想法? 感谢您的支持。
答案 0 :(得分:1)
您可以使用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');
?>
答案 1 :(得分:0)
DBMS可以为您完成此任务。只需使用命令:
for (file : location.listFiles())
{
if (file.isDirectory)
{
recursive_scan(file)
}
else
{
Pattern pattern = Pattern.compile("gruell.*\\.exe[^\\.]", Pattern.CASE_INSENSITIVE);
if (pattern.matcher(file.name).find())
{
System.out.println("FOUND: " + file.name);
}
}
}