我的代码存在问题。我有这个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());
?>
我认为它没有错误,但是在运行之后,在数据库中,所有字段都为空! 我无法找到并解决问题。
提前致谢。
答案 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注入攻击。