Php 使用不带foreach的数组更新mysql

Php 使用不带foreach的数组更新mysql,php,mysql,mysqli,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($

我将
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);
}
$albumid=$\u GET['id'];
$gettrack=$_POST[“歌曲曲目”];
$gename=$\u POST[“songname”];
$getlength=$_POST[“songlength”];
$getprice=$_POST[“songprice”];
$data=array();
$size=count($_POST[“songname”]);
对于($i=0;$i<$size;$i++){
$data[$i]=数组(
“albumid”=>$albumid,
“track”=>$gettrack[$i],
“name”=>$gename[$i],
“长度”=>$getlength[$i],
“价格”=>$getprice[$i]
);
}
$values=array();
foreach($data作为$datas){
$values[]=“({$datas['albumid']}'、{$datas['track']}'、{$datas['name']}'、{$datas['length']}'、{$datas['price']}'”;
}
$values=内爆(“,”,$values);
$sql=“插入`歌曲'(唱片ID、曲目、名称、长度、价格)值{$VALUES};”;
if(mysqli_查询($connection,$sql)){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($connection); }
现在我想用类似这样的东西更新mysql,但我不知道,在谷歌上搜索并找到了类似的主题,但所有主题都用数组更新mysql,使用
foreach
循环,我不想对每个数组进行查询,有解决方案吗


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

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

启动交易; 更新。。。。 更新。。。。 更新。。。。 承诺

一次一个地运行更新应该会更快

另一个解决方案可以是构建复杂性更新语句。例如:

更新歌曲 设置 字段=条件1时的案例值1,然后是值1 当条件2时,则值2

或者复杂的IF-ELSE语句

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


我想没有别的办法了。

你运行过这段代码吗?是的,这段代码插入到了mysql中,它工作得很好,我正在寻找一个类似上述代码的
update
mysql的解决方案,没有任何循环@不幸的是,mysql不支持像批量更新这样的东西。但另一个解决方案是在第一次更新之前开始事务,在最后一次查询之后提交。应该快一点。我会给你写一个答案。我知道问题出在哪里了。不太清楚。您试图同时更新多行,而不是多列。。。请阅读以下内容: