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