从PHP表中一次更新多个mysql条目


Update several mysql entries at once from PHP table

我有一个表,其中包含来自mysql数据库的一些数据。我需要从表本身中更新该信息,因此当我按下按钮提交(表格位于表单内)时,我需要在数据库中更新所有数据。我可以毫无问题地从数据库中获取信息,但我无法更新它!这是代码:

<table border=1 cellpadding=4 cellspacing=0 width=960px style='font-size:10px'> 
<form id='form1' name='form1' method='post' action='itself.php'>
<thead>
<tr>
<th colspan=3> People on the list </th>
<th><input type='submit' name='filtrar' id='filtrar' value='Filtrar'/></th>
<th><input type='submit' name='modificar' id='modificar' value='Modificar'/></th>
</tr>
<tr>
<th><label for='id'>ID</label></th>
<th><label for='id'>Friends</label></th>
<th><label for='id'>On the list?</label></th>
</tr>

<?
while($row = mysqli_fetch_array($result_listas, MYSQLI_BOTH))
$id= $row['id'];
{
?>
<tr>
<td><? echo "$row[id]" ?>
</td>
<td><select name='friends[<? echo "$id" ?>]' size='1' id='friends[<? echo "$id" ?>]'>
<option selected='selected'><? echo "$row[friends]" ?></option>
<option>less than 10</option>
<option>more than 10</option>   
</select>
</td>
<td><select name='onlist[<? echo "$id" ?>]' size='1' id='onlist[<? echo "$id" ?>]'>
<option selected='selected'><? echo "$row[onlist]" ?></option>
<option>SI</option>
<option>NO</option> 
</select>
</td>
<? 
$ssql_min="select min(id) as id from listas_old";
$result_min=  mysqli_query($link, $ssql_min);
$resultado_min = mysqli_fetch_array($result_min, MYSQLI_BOTH);
$ssql_max="select max(id) as id from listas_old";
$result_max=  mysqli_query($link, $ssql_max);
$resultado_max = mysqli_fetch_array($result_max, MYSQLI_BOTH);      
if(isset($_POST[modificar]))
{
for($i=$resultado_min['id']; $i<$resultado_max['id']; $i++)
            {
$sql1="UPDATE listas_old SET friends='$friends[$i]', onlist='$onlist[$i]' WHERE id='$i'";
$result1=mysqli_query($link, $sql1);
}
}
?>

OP在评论中写道:

为自己找到了解决方案!这就是我所做的...

for句子改为:

for($i=$resultado_min['id'];
    $i<=$resultado_max['id'];
    $i++) {
    $friendsfor= $_POST['friends('.$i.')'];
    $onlistfor= $_POST['onlist('.$i.')'];
    $sql1="UPDATE listas_old SET friends='$friendsfor', anotado= '$onlistfor' WHERE id='$i'";
    } 

似乎您在更新中的引号都是错误的。您正在尝试将字符串(您的更新 sql)与 php 变量连接起来。但是你需要确保 php 将它们识别为变量,而不仅仅是字符串。

应该是这样的

$sql1= "UPDATE listas_old SET friends='" . $friends[$i] . "', onlist='" . $onlist[$i] . "' WHERE id='" . $i . "'";

如果您添加 varchar 或日期或其他东西,则只需要添加单引号。如果是 int,则不需要单引号。我也不确定名单上会做什么,或者这是否有效。