【发布时间】:2014-02-07 02:29:10
【问题描述】:
我正在尝试从 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 时,一切似乎都在那里。有人可以解释如何解决这个问题,为什么会出错?对于其他页面,我有相同问题的其他更复杂的变体。
【问题讨论】:
-
echo mysqli_error($con);你会看到语法错误。那些复杂的变量需要像'{$_POST['GKYears'][$i]}'一样包装成{}才能在该字符串中正常工作。 但是,备份并read this thoroughly - 您的代码极易受到 SQL 注入的攻击。您需要使用prepared statements in MySQLi 来保护您的代码免受篡改。