插入数据库失败

时间:2014-07-24 21:15:54

标签: php html sql insert isset

我的代码存在问题。我有这个HTML格式

<form method="post" action="invio_db1.php">
    Nome <input type="text" name="nome"> <br><br>
    Cognome <input name="cognome" type="text"> <br><br>

    <input value="Invia" type="submit">
    <input value="Reset" type="reset">
</form>

和这个PHP代码

<?php
    $host = "127.0.0.1";
    $nick = "root";
    $pw = "";
    $db_name = "associazydbe";

    $db = mysqli_connect($host, $nick, $pw) or die ("Errore nella connessione");
    mysqli_select_db($db, $db_name) or die (mysqli_error());

    if(!empty($_POST["nome"]))
        $nome = $_POST["nome"];
    else
        $nome = null;

    if(!empty($_POST['cognome']))
        $cognome = $_POST['cognome'];
    else
        $cognome = null;

    $query = "INSERT INTO persons_comeunprodigio (nome, cognome)
                  VALUES ('$nome', '$cognome')";

    mysqli_query($db, $query) or die(mysqli_error());
?>

我认为它没有错误,但是在运行之后,在数据库中,所有字段都为空! 我无法找到并解决问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

可能您应该在PHP脚本中添加条件,并仅在发送表单时将数据插入数据库。

而不是:

   if(!empty($_POST["nome"]))
        $nome = $_POST["nome"];
    else
        $nome = null;

    if(!empty($_POST['cognome']))
        $cognome = $_POST['cognome'];
    else
        $cognome = null;

    $query = "INSERT INTO persons_comeunprodigio (nome, cognome)
                  VALUES ('$nome', '$cognome')";

    mysqli_query($db, $query) or die(mysqli_error());

你应该:

if (isset($_POST['nome'])) {

   if(!empty($_POST["nome"]))
        $nome = $_POST["nome"];
    else
        $nome = null;

    if(!empty($_POST['cognome']))
        $cognome = $_POST['cognome'];
    else
        $cognome = null;

    $query = "INSERT INTO persons_comeunprodigio (nome, cognome)
                  VALUES ('$nome', '$cognome')";

    mysqli_query($db, $query) or die(mysqli_error());
}

现在您需要填写表格并按提交按钮将数据插入数据库。

但是,您应该至少使用mysqli_real_escape_string,但更好的选择是prepared statements。目前,您的代码容易受到SQL注入攻击。