Php 插入数据库失败

Php 插入数据库失败,php,html,sql,insert,isset,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="su

我对这个代码有问题。我有这个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>

诺姆

Cognome

这个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());
}
现在您需要填写表单并按submit按钮将数据插入数据库


然而,您应该至少使用
mysqli\u real\u escape\u string
,但更好的选择是。目前,您的代码易受SQL注入攻击。

您可以执行
echo$query在您尝试插入它之前,只是为了查看查询的格式是否正确?还要确保数据库中的列与您指定的列完全相同,并确保它们接受适当的数据类型将错误报告添加到文件顶部打开
localhost后,并不是每台机器上都映射到127.0.0.1,因此最好使用localhost而不是127.0.0.1。您还需要使用
mysqli\u error($db)