[英]Mysql keeps entering blank fields, can anyone help me fix this?
我正在尝试学习php和mysql,并且运行良好,但是我试图使用$ _POST方法从另一页向数据库中插入内容,当我检查数据库以查看其是否起作用时,它会创建另一行但没有信息。
第一页
<html>
<body>
<form action="InsertExternal.php" method=post>
First Name: <input type="text" name="firstname" />
Last Name: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
第二页
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("Learning", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
谢谢你的帮助。 我想象它缺少一些简单的东西。
确保您没有直接联系此页面。 在这种情况下,在进行实际插入之前,请检查字段中是否有值:
if(isset($_POST['firstname']) && isset($_POST['lastname']) && ..
第二件事,在插入数据库之前,您必须清理输入内容:使用:
$firstname = mysql_real_esacpe_string($_POST['firstname']);
您还可以在语句中使用或with:
mysql_query($q)
or die(mysql_error());
您从不检查表单是否在第二页上提交,什么也没有“巨大”,但可能只是刷新发生并且有空数据输入。第二,您应该真正更改插入部分,因此您不必从不用单引号引起来的索引索引$_POST
数组周围,得到大量的“未定义的常量通知”。
<?php
if (empty($_POST['age'])) {
echo "Sorry, you appear to have omitted a few items. Try again!";
exit;
}
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("Learning", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('{$_POST['firstname']}','{$_POST['lastname']}','{$_POST['age']}')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
对于SQL注入,还有一个明显的担忧,如果您打算真正想要使用MySQL,那么您应该阅读并学习防止它的适当方法。
<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("Learning", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('" . $_POST["firstname"] . "','" . $_POST["lastname"] . "','" . $_POST["age"] . "')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
没有正确引用全局变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.