我已经好几天了.我已经搜索了如何更新表,并设法获得更新行,但只有表中的最后一行.所以现在我想要一个循环遍历所有输入并用输入的值更新数据库.我认为需要纠正的代码位于代码末尾附近
我想做的事:
>在html表中获取/显示数据库
>更改某些列的值
>使用提交按钮更新数据库表,该按钮更新数据库中的每一行
下面是Web视图中表格的图片:
//Connect to database
include '../db/connect.php';
?>
$result = $MySQLi_CON->query("SELECT * FROM users");
echo "
";echo "
CLASS 1";echo "
";//All table rows in database presented in html table
while($row = $result->fetch_array()){
echo "
";echo "
";echo "
username :";echo "
email :";echo "
rank :";echo "
";}
echo "";
?>
if(isset($_POST['update'])){
$total = count($_POST['rank']);
$user_id_arr = $_POST['user_id'];
$rank_arr = $_POST['rank'];
for($i = 0; $i < $total; $i++){
$user_id = $user_id_arr[$i];
$rank = $rank_arr[$i];
$query = "UPDATE users SET `rank`= '".$rank."' WHERE `user_id`= '".$user_id."'";
$MySQLi_CON->query($query);
header('Location: test7.php');
}
}
?>
当我按UPDATE按钮时,我得到PHP注意:数组到字符串转换….
它指的是第30行,它是这一行:
$query =“UPDATE用户SET rank = $_ POST [rank] [$row] WHERE user_id = $value”;
编辑:编辑上面的代码到工作代码.谢谢@Frayne Konok的帮助.
解决方法:
You did a great mistake here, Why you use the $result in foreach
loop?? FRom where the $result comes?? The $result is the resource
of the sql query.
试试这个:
if(isset($_POST['update'])){
$total = count($_POST['rank']);
$user_id_arr = $_POST['user_id'];
$rank_arr = $_POST['rank'];
for($i = 0; $i < $total; $i++){
$user_id = $user_id_arr[$i];
$rank = $rank_arr[$i];
$query = "UPDATE users SET `rank`= '".$rank."' WHERE `user_id`= '".$user_id."'";
$MySQLi_CON->query($query);
}
}
试试这个,让我知道是否有任何问题.
标签:php,mysql
来源: https://codeday.me/bug/20190623/1269580.html