[英]Updating multiple rows in mysql/php from a form
我正在嘗試從HTML表單更新mysqli表中的多行。 數據似乎正在從表單傳送到我的“更新數據庫”頁面。 但這並沒有進入數據庫。
這是表格的相關部分:
for($i=0;$i<$rowcount;$i++)
{
$row = mysqli_fetch_array($result);
echo "<tr>
<td> $row[SubFirstName] $row[SubLastName] </td>
<td> $row[PerfFirstName] $row[PerfLastName] </td>
<td style='display:none'><input type='text' class='input' name='PerformerID[]' value= '$row[PerformerID]' /> Years</td>
<td><input type='text' class='input' size= '5' name='GKYears[]' value= '$row[GKYears]' /> Years</td>
</tr>";
}
這是將值插入數據庫的代碼:
for($i=0;$i<$count;$i++)
{
mysqli_query($con, "UPDATE Performers SET
GKYears = '$_POST[GKYears][$i]'
WHERE PerformerID = '$_POST[PerformerID][$i]'");
}
當我執行POST
數據的var_dump
時,一切似乎都在那里。 有人可以解釋如何解決此問題,以及為什么會出錯嗎? 在其他頁面上,我也有相同問題的其他更復雜的變體。
結構不良。 不要使用CSS模擬隱藏的表單字段,甚至不需要隱藏的字段:
echo <<<EOL
<tr>
<td>... name stuff ...</td>
<td>... perf stuff ...</td>
<td><input type="text" name="GKYears[{$row['PerformerID']}]" value="{$row['GKYears']}" /></td>
</tr>
EOL;
請注意,ID值是如何嵌入字段名稱中的,因此您將獲得以下結果
<input ... name="GKYears[42]" ... />
<input ... name="GKYears[103]" ... />
然后,您的PHP端內容將變得簡單:
foreach($_POST['GKYears'] as $rowID => $value) {
... update db for record Id $rowID with value $value
}
除此之外,您的代碼范圍很廣,只是乞求進行SQL注入攻擊 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.