插入数据库失败


Failed insert into database

我对这段代码有一个问题。我有这个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());
?>

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

也许您应该在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,但更好的选择是准备语句。目前您的代码是脆弱的SQL注入。