繁体   English   中英

Mysql不断输入空白字段,有人可以帮助我解决此问题吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM