使用没有foreach的数组更新mysql

时间:2017-06-06 15:09:28

标签: php mysql mysqli

我将array插入mysql而没有任何循环,并对每个数组进行查询:

$albumid = $_GET['id'];
$gettrack = $_POST["songtrack"];
$gename = $_POST["songname"];
$getlength = $_POST["songlength"];
$getprice = $_POST["songprice"];

$data = array();
$size = count($_POST["songname"]);

for($i = 0 ; $i < $size ; $i++){
  $data[$i] = array(
     "albumid"     => $albumid, 
     "track"     => $gettrack[$i], 
     "name"    => $gename[$i], 
     "length"    => $getlength[$i], 
     "price"       => $getprice[$i]
  );
}

$values = array();
foreach($data as $datas){
  $values[] = "('{$datas['albumid']}','{$datas['track']}', '{$datas['name']}', '{$datas['length']}', '{$datas['price']}')";
}

$values = implode(", ", $values);

$sql = "INSERT INTO `song` (albumid, track, name, length, price) VALUES {$values};";

if (mysqli_query($connection, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}

现在我想用这样的东西更新mysql ,但我不知道,谷歌搜索并找到类似的主题,但所有的主题更新mysql与数组foreach循环,我不&# 39; t想用每个数组进行查询,任何解决方案?

我可以更改上面的代码来更新mysql吗?

1 个答案:

答案 0 :(得分:0)

您正在使用mysqli扩展程序。 因此,可能的选项之一是使用multi_query函数,generate会单独串起所有更新语句并在一次事务中运行它:

开始交易; UPDATE .... UPDATE .... UPDATE .... COMMIT;

一次运行更新应该更快。

另一种解决方案可能是构建复杂性UPDATE语句。例如:

更新歌曲 组     Field = CASE value1 WHEN condition1 THEN value1 当条件2那么值2 ......

或复杂的IF ELSE声明。

最后一种可能性是使用自定义程序或功能来评估正确的值。

我没有别的办法了。