gpt4 book ai didi

php - 更新使用 PHP 和 SQL 填充的 Web 表单中同一表的多行

转载 作者:行者123 更新时间:2023-11-29 10:29:50 29 4
gpt4 key购买 nike

我的目标是创建一个动态网页,返回表中满足给定条件的所有记录,并使用它们填充网络表单。然后,用户可以根据需要进行更改,并只需按一下按钮即可更新整个表格。

在下面的示例中,我想列出所有事件,开始时间将显示在可编辑文本框中,当我按提交时,它应该更新所有值。

我在下面创建了一个模型:

$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 注入(inject)的攻击。您应该阅读 Mysqli 准备好的语句并开始使用它们。

关于php - 更新使用 PHP 和 SQL 填充的 Web 表单中同一表的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610422/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com