Mysql一直在输入空白字段,任何人都可以帮我解决这个问题吗?

时间:2011-09-23 22:39:45

标签: php sql database

我正在尝试学习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)
?>

感谢您的帮助。我想象它很简单,我想念它。

3 个答案:

答案 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正确引用全局变量