php通过表单更新动态sql行


php update dynamic sql rows through form

我的目标是检索一个行的动态SQL列表,并使用POST编辑同一页面中列表中的每一项(不需要同时进行多个更改)。这能在同一页内实现吗?我制作了下面的脚本,以我想要的方式显示了所有内容,但是switch语句似乎不适合使用。

我知道这个代码可能不是最佳实践(更不用说安全)。很抱歉我不够灵活,但我不允许使用除PHP/HTML 之外的任何东西

代码:

<?php
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    echo '<tr> <td class="tg">' .$row["id"]. '</td>' . "'n";
    echo '<td class="tg"> <form action= "" method="post"> <input type="text" name="voornaam"      value="'.$row["voornaam"].'" style="width:100px"> <input name="submit" type ="submit"  value="Aanpassen"><br/><br/>' . '</td>' . "'n";
    echo '<td class="tg"> <form action= "" method="post"> <input type="text" name="voornaam" value="'.$row["achternaam"].'" style="width:100px"> <input name="submit" type ="submit"  value="Aanpassen"><br/><br/>' . '</td>' . "'n"; 
    echo '<td class="tg"> <form action= "" method="post"> <input type="text" name="voornaam" value="'.$row["omschrijving"].'" style="width:500px"> <input name="submit" type ="submit"  value="Aanpassen"><br/><br/>' . '</td> </tr>' . "'n";
}
} else {
echo "0 resultaten";
}
switch(!empty($_POST))
{
case !empty($_POST[$row["voornaam"]]):
     // update SQL query 'firstname' here
    break;
}
$conn->close();
?>

通过这种方式,您可以实际看到您正在编辑的内容,而且它更干净。

// PDO DB conecction (secure way)
    try {
        $con = new PDO("mysql:host={$host};dbname={$db_name}", $username, $password);
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }catch(PDOException $exception){ //to handle connection error
        echo "Connection error: " . $exception->getMessage();
        }
if isset($_POST["voornaam"]){
 $stmt = $con->prepare(" QUERY");
        $stmt->execute();
echo "YEAH you did it";
} else {
stmt = $con->prepare(" QUERY");
        $stmt->execute();
        $rows = $stmt->fetchAll();
    foreach ($rows as $rs)
        {
            $voornaam = $rs["voornaam"]
    $achternaam = $rs["achternaam"]
    $omschrijving = $rs["omschrijving"]
            }
}
    // Just an example
    echo '<form action= "" method="post"> <input type="text" name="voornaam"      value="'. $voornaam .'" style="width:100px"><input name="submit" type ="submit"  value="Submit"><br/><br/>';

值也是输入,因此您在最后只能有一个Submit按钮,因为所有其他数据都将被自己覆盖。

<?php
if ($result->num_rows > 0) 
{
    // output data of each row
        while($row = $result->fetch_assoc()) 
        {
            echo '<tr> <td class="tg">' .$row["id"]. '</td>' . "'n";
            echo '<td class="tg"> <form action= "" method="post"> <input type="text" name="voornaam"      value="'.$row["voornaam"].'" style="width:100px"> <input name="submit" type ="submit"  value="Aanpassen"><br/><br/>' . '</td>' . "'n";
            echo '<td class="tg"> <form action= "" method="post"> <input type="text" name="voornaam" value="'.$row["achternaam"].'" style="width:100px"> <input name="submit" type ="submit"  value="Aanpassen"><br/><br/>' . '</td>' . "'n"; 
            echo '<td class="tg"> <form action= "" method="post"> <input type="text" name="voornaam" value="'.$row["omschrijving"].'" style="width:500px"> <input name="submit" type ="submit"  value="Aanpassen"><br/><br/>' . '</td> </tr>' . "'n";
        }
}
else 
{
    echo "0 resultaten";
}

if( isset( $_POST[$row["voornaam"]] ) && !empty( $_POST[$row["voornaam"]] ) )
{
    // update SQL query 'firstname' here
}
    $conn->close();
?>

在您的交换机中,您发送的!empty($_POST)是布尔值(true或false),因此唯一的情况是:true或false。。。

如果你把你的开关改成:会更好

if(isset($_POST[$row["voornaam"]]) && !empty($_POST[$row["voornaam"]])){
  // update SQL query 'firstname' here
}