一次更改所有表单值(PHP)并保留空白表单,而不会将值变为空白。如何?

时间:2016-08-19 01:27:52

标签: php forms mysqli

我一直在尝试创建更新表单。我的想法是,我的网站中的一些链接应该在更新时更改。我已经设法做到了,但我想要的是'echo'成功改变了!“'在表格的最后只显示一次。

 <?php 
//credentials
if (isset($_POST["submit"])){
    $server = 'server';
    $user = 'user';
    $pw = 'password';
    $BD = 'db-of-mine';

    //estabelece a conexão
    $conn = mysqli_connect($server, $user, $pw, $BD);
    if (!$conn) {
        die ('<span style="color: #FF0000;">"connection failed: "</span>' .  mysqli_connect_error());
    }

    $home = $_POST["home"];
    $apendix = $_POST["apendix"];
    $sobre = $_POST["sobre"];
    $contato = $_POST ["contato"];

    $query1 = "UPDATE form SET home= '$home' WHERE id='1'";
    $query2 = "UPDATE form SET apendix= '$apendix' WHERE id='1'";
    $query3 = "UPDATE form SET sobre= '$sobre' WHERE id='1'";
    $query4 = "UPDATE form SET contato= '$contato' WHERE id='1'";

    //$query = "INSERT INTO form (home, apendix, sobre, contato) VALUES ('$home', '$apendix', '$sobre', '$contato')";

    if (mysqli_query($conn, $query1)){
        echo "Changes successfuly made!";
    } else {
        echo "ERROR" . $query . "<br>" . mysqli_error($conn);
    }

    mysqli_close($conn); 
}
?> 

上面的查询仅更改“home”值。我已经设法通过复制和粘贴if (mysqli_query($conn, $query[number]))来改变它们;例如,query2query3query4等。

但是当我这样做时,成功消息会出现四次。我希望能够立即更改它们,并且消息只出现一次。

另外,如果有可能的话,我希望如果表格留空则值不会变为空白,这也是我遇到的问题。

提前致谢:D

1 个答案:

答案 0 :(得分:1)

所有这些更新都可以作为一个查询完成

$query1 = "UPDATE form SET home= '$home' WHERE id='1'";
$query2 = "UPDATE form SET apendix= '$apendix' WHERE id='1'";
$query3 = "UPDATE form SET sobre= '$sobre' WHERE id='1'";
$query4 = "UPDATE form SET contato= '$contato' WHERE id='1'";

可以写成

$query = "UPDATE form SET 
            home= '$home',
            apendix= '$apendix',
            sobre= '$sobre',
            contato= '$contato'
          WHERE id='1'";
  

虽然我必须提到您的脚本存在SQL Injection Attack的风险   看看Little Bobby Tables偶然发生了什么   if you are escaping inputs, its not safe!   使用prepared parameterized statements

     

我可以建议您查看basic SQL tutorial