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

标签 php mysql webforms

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

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

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

$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/

相关文章:

asp.net-mvc - Microsoft 站点之外有哪些资源可用于了解 Form 和 MVC Web 应用程序?

php - mySQL 5.7 无法与组正常工作

javascript - 在 mysql 中通过别名获取行后无法生成 json 数据

javascript - 表单按钮禁用 onsubmit 但表单未在 javascript 中提交

php - 按时间段显示菜单 PHP PHP MySQL

c# - OWIN出现蓝屏死机

php - javascript 表单生成 vs. ajax php 表单生成

javascript - 从 MySQL 导出到 Neo4j

mysql - 使用 PreparedStatement 从 MySQL 数据库传输数据的开销

asp.net - 一个更新面板与多个更新面板