我将 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/