为什么只更新数组的最后一个值,而不是所有5个?



我正在尝试更新查询的" email ";通过关联数组循环,但当我尝试这样做时,只取数组的最后一个值并更新。

这里是代码…

<?php
include_once('db_connect.php');
$update_array=array();
$update_array=array(
array('Email'=>'richard123@gmail.com'),
array('Email'=>'hennry123@gmail.com'),
array('Email'=>'loster123@gmail.com'),
array('Email'=>'luffy123@gmail.com'),
array('Email'=>'zoro123@gmail.com'));
print_r($update_array)."<br>";
echo "<pre>";

foreach ($update_array as  $value ) {        

$update_Email=$value['Email'];
$update="UPDATE form SET email='$update_Email' where id";
$result= mysqli_query($conn, $update);

}               

if ($result) {
echo "New record Updated successfully";
} 
else {
echo "Error:not created ". mysqli_error($conn);
}
mysqli_close($conn);
?>

数据更新图像,

输入图片描述

我尝试nastforeach来获取数组值,然后传入update,但错误出现:数组偏移在字符串上。

帮助更新所有的电子邮件的数据在一次和所有。

你需要在where子句中定义id, id需要是你想要更新的行。

<?php
include_once('db_connect.php');
$update_array=array();
$update_array=array(
array('Email'=>'richard123@gmail.com', 'id'=>'1'),
);
foreach ($update_array as $value ) {        
$update_Email=$value['Email'];
$update_id = $value['id'];

$update="UPDATE form SET email='$update_Email' where id = $update_id";
$result= mysqli_query($conn, $update);
}               
if ($result) {
echo "New record Updated successfully";
} else {
echo "Error:not created ". mysqli_error($conn);
}
mysqli_close($conn);
?>    

我还强烈建议你阅读准备好的语句,以确保你不会成为SQL注入的目标。

<?php
include_once('db_connect.php');
$update_array=array();
$update_array=array(
array('Email'=>'richard123@gmail.com', 'id'=>'1'),
);
foreach ($update_array as $value ) {        

$stmt = $conn->prepare("UPDATE form SET email = ? WHERE id = ?");
$stmt->bind_param("si", $update_Email, $update_id);
$update_Email=$value['Email'];
$update_id = $value['id'];
$stmt->execute();
}           
$stmt->close();
$conn->close();
?>

php.net//预编译语句

最新更新