0

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);
}

}
?>
4

2 に答える 2

0

アップデートで引用符がすべて間違っているようです。文字列(更新SQL)をphp変数と連結しようとしています。ただし、php がそれらを単なる文字列ではなく変数として認識するようにする必要があります。

このようにする必要があります

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

varchar や date などを追加する場合にのみ、一重引用符を追加する必要があります。int の場合、一重引用符は必要ありません。また、onlistが何をするのか、それが有効かどうかもわかりません。

于 2013-10-18T19:08:40.817 に答える