更新多行中使用PHP和SQL
我的目标填充一个WebForm的同桌是创建一个动态网页,返回所有记录在表中满足给定的标准,并使用它们来填充网页表单。然后,用户可以更改按照自己的意愿,并按下一个按钮,更新整个表。更新多行中使用PHP和SQL
在下面我想列出所有事件的例子,开始时间将出现在一个可编辑的文本框,当我按下提交应更新所有的值。
我已经创建了一个样本:
$query = "SELECT * FROM Events"; $result = mysqli_query($dbc, $query) ;
if (mysqli_num_rows($result) > 0)
{
echo '<form action="update_events.php" method="post">>';
echo '<table><tr>';
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
echo '<td>' . $row['Event_Name'] .' </td>'.
'<td>' . $row['Event_Date'] .'</td>'.
'<td><input name="'. $row['Event_ID'] .'" type="text" value="'$row['Event_Start_Time'] .'"></td>';
echo '</tr>';
}
echo '</table>';
echo ' <input type="submit" value="Submit"></form>';
mysqli_close($dbc) ;
}
else
{
echo '<p>There are currently no events.</p>' ;
}
我找不出我们如何获得的update_events.php的处理工作,任何帮助,将不胜感激。
foreach(????){ $sql = "UPDATE Events SET Event_Start='$Event_Start' WHERE id='$Event_ID'";
mysqli_query($dbc, $sql)
}
回答:
你真的想保持你的POST变量是静态的,它使生活更轻松。不要试图用一个变量来存储两个值,他们每个人一个。
当你提交你要循环的话很有道理提交他们的阵列多个值到服务器上,所以这样的事情:
$i=0; while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
echo '<td>' . $row['Event_Name'] .' </td>'.
'<td>' . $row['Event_Date'] .'</td>'.
'<td><input name="event['.$i.'][start]" type="text" value="'$row['Event_Start_Time'] .'"><input name="event['.$i.'][ID]" type="hidden" value="'. $row['Event_ID'] .'"></td>';
echo '</tr>';
$i++;
}
现在你的形式将提交所有的事件多维数组,你可以在$_POST['event']
和遍历检索它做你的数据库更新这样的:
$stmt = $this->mysqli->prepare("UPDATE Events SET Event_Start=? WHERE id=?"); $stmt->bind_param('ss', $start, $id);
foreach ($_POST['event'] as $event) {
$start = $event['start'];
$id = $event['ID'];
$stmt->execute();
}
此代码使用准备好的语句的数据库插入,您所使用的方法是不安全的,让你容易受SQL注入影响。你应该阅读Mysqli准备好的陈述并开始使用它们。
以上是 更新多行中使用PHP和SQL 的全部内容, 来源链接: utcz.com/qa/257440.html