簡體   English   中英

從表單更新mysql / php中的多行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM