php - 使用不带 foreach 的数组更新 mysql

标签 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,但我不知道,谷歌搜索并找到了类似的主题,但所有主题都用带有 foreach 循环的数组更新 mysql,我不想对每个数组进行查询,有什么解决方案吗?

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

最佳答案

您正在使用 mysqli 扩展。 因此,可能的选择之一是使用 multi_query 函数,分别生成所有更新语句的字符串并在一个事务期间运行它:

开始交易; 更新.... 更新.... 更新.... 提交;

一次一次运行更新应该会更快。

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

更新歌曲 放 字段 = CASE 值 1 WHEN 条件 1 THEN 值 1 当条件 2 那么值 2 ...

或复杂的 IF ELSE 语句。

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

我想没有其他办法了。

关于php - 使用不带 foreach 的数组更新 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44393669/

相关文章:

mysql - 将一个表中的行写入另一个表中,另一表中的每一行

php - mysqli动态更新查询

php - 在 php 准备语句中从另一个字符串添加到数组

php - SQL 中跳过 0 和 NULL

php - simplexml 无需类型转换即可获取节点值

php - 插入Mysql并获取唯一id

php - 如何忽略 1062 错误,即只添加不重复的行而不会导致错误?

php - 在另一个页面上获取电子邮件 ID

javascript - 将数据放在指定日期的 highcharts 中

PHP move_uploaded_file 失败且没有错误