我正在尝试学习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)
?>
感谢您的帮助。我想象它很简单,我想念它。
答案 0 :(得分:2)
确保您没有直接联系此页面。 在这种情况下,在进行实际插入之前,检查字段中是否有值:
if(isset($_POST['firstname']) && isset($_POST['lastname']) && ..
第二件事, 在插入数据库之前,您必须清理输入: 使用方法:
$firstname = mysql_real_esacpe_string($_POST['firstname']);
您也可以在声明中使用或:
mysql_query($q)
or die(mysql_error());
答案 1 :(得分:0)
你永远不会检查表单是否在第二页上提交,没有什么“巨大”,但它可能只是刷新并且空数据进入。其次,你应该真的改变插入部分所以你没有得到大量的“Undefined Constant notices”,而不是用单引号围绕关联索引$_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,那么您应该阅读这个主题,并学习正确的方法来防止它。
答案 2 :(得分:-1)
<?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)
?>
Didnt正确引用全局变量