0
對數據庫中的每一行進行單獨更新時,我想更新數據庫,但每次腳本運行時,最後一行的值都更新爲整個表。只有這些值必須相應地進行更改。使用<input type = number>
$conn=mysql_connect('localhost','root','');
$db=mysql_select_db('shaggy');
$q = "SELECT * FROM `automata`";
$re=mysql_query($q)or die(mysql_error());
$num=mysql_num_rows($re);
從那裏的行數提取
$i=0;
while($num>$i)
{
$bupin=mysql_result($re,$i,'bupin');
$name=mysql_result($re,$i,'name');
$q1=mysql_result($re,$i,'q1');
$q2=mysql_result($re,$i,'q2');
$mst1=mysql_result($re,$i,'mst1');
$mst2=mysql_result($re,$i,'mst2');
$est=mysql_result($re,$i,'est');
echo "<tr>
<td> <b>$bupin</b> </td>
<td><b> $name </b></td>
<td><input type='number' min='00' max='30' value='$q1' name='f1' ></td>
<td><input type='number' min='00' max='30' value='$q2' name='f2' ></td>
<td><input type='number' min='00' max='50' value='$mst1' name='f3' ></td>
<td><input type='number' min='00' max='50' value='$mst2' name='f4' ></td>
<td><input type='number' min='00' max='100' value='$est' name='f5' ></td>
</tr>";
$i++;
}
這個腳本正在顯示從數據庫表中的所有值和數量的選項的幫助下,SQL連接也可以是用戶想要改變。但是在更改值並提交它時,所有表都被分配了最後一行更新的值,並且不會使用它們各自的值進行更新。 的更新用的代碼如下:
$conn=mysql_connect('localhost','root','');
$db=mysql_select_db('shaggy');
$q = "SELECT * FROM `automata`";
$re=mysql_query($q)or die(mysql_error());
$num=mysql_num_rows($re);
$i=0;
while($num>$i)
{
$a=$_POST['f1'];
$b=$_POST['f2'];
$c=$_POST['f3'];
$d=$_POST['f4'];
$e=$_POST['f5'];
$nbupin=mysql_result($re,$i,'bupin');
$nname=mysql_result($re,$i,'name');
mysql_query("UPDATE automata SET q1=$a, q2=$b, mst1=$c, mst2=$d, est=$e WHERE bupin='$nbupin'");
$i++;
}
echo "Success";
因爲你是在一個循環中建立你的'單曲,最後一個將會覆蓋所有其他的值。你應該用一個配對的鍵作爲一個數組來完成,然後當你在後端執行循環時使用該鍵。 – Sean
哪裏是主鍵?你怎麼知道哪一行更新?順便說一句,'mysql'已被棄用,開始使用'mysqli'或'PDO'。另外我建議使用數組作爲後期,索引作爲主鍵。 – Jigar