表单不会保存数据库中的任何内容

时间:2016-09-25 12:03:03

标签: php html

我的表单不会保存在我的数据库中 连接保存为con_mysql.php的代码:

<?php
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PSWD', '*****');
DEFINE ('DB_NAME', 'lexusdb');

$dbcon = mysqli_connect(DB_HOST, DB_USER, DB_PSWD, DB_NAME);
?>

表单代码:

<form method="post" action="newep.php">
<input type="hidden" name="submitted" value="true" />
<fieldset>
<legend>New Content:</legend>
<label>Name: <input type="text" name="newcontent" /></label>
</fieldset>
<br />
<input type="submit" value="add new anime" />
</form>
<?php
echo $newrecord
?>

PHP:

<?php

if (isset($_POST['submit'])) {
    include('con_mysql.php');

    $nanime = $_POST['newcontent'];
    $sqlinsert = "INSERT INTO title (title_name) VALUES ('$newcontent')";

    if (!mysqli_query($dbcon, $sqlinsert)) {
        die('Error inserting new record');      
    }

    $newrecord = "1 anime added";
}

?>

起初它只是不会使用表单在DB中保存任何内容,现在它也有Undefined变量:newrecord

还创建了保存在同一文件夹和newep.php中的所有文件。我的数据库由名为title的表组成,内部标题有title_id INT(4)not null auto_increment然后title_name VARCHAR(255)not null。我希望你们可以帮助我解决这个问题,因为你们只是在寻找我需要的东西帮助我。谢谢

2 个答案:

答案 0 :(得分:1)

编辑:

你的代码缺失的东西很少,但是没关系,你还在学习它的好方法,从故障中学习是好的。

你遗漏的最重要的事情之一就是你必须在你的代码中阻止SQL注入,即使你的代码很完美但你查询有问题然后你遇到了麻烦,怎么能你保护你的查询?通过这种方式:SQL INJECTION

其次,我看到你使用MYSQLI,这是一个很好的关系数据库驱动程序,但我更喜欢你开始使用PDO。什么是PDO?

  

PDO是PHP Data Objects的首字母缩写。 PDO是一种精益,一致的方式   访问数据库。这意味着开发人员可以编写可移植代   更容易。 PDO不是像PearDB那样的抽象层。 PDO是一个   更像是使用统一API的数据访问层(应用程序   编程接口)。

简单易行。 PDO和MYSQLI之间有什么区别?

Different between MYSQLI and PDO

第三件事,我将从Fred的一条评论中得出结论,您需要开始使用错误报告,请阅读:

Errors Reports

现在到代码。

在您的代码中,您尝试在从表单接收数据之前(在提交发生之前)回显表单中的变量,因此您应首先发送数据并接收数据,然后随意执行任何操作。

在您的代码中:

<?php
   echo $newrecord
?>

正确的方法可以在这里看到:

if (isset($_POST['submit'])) 
        {
            include_once('con_mysql.php');

            $nanime = $_POST['newcontent'];
            $sqlinsert = "INSERT INTO title (title_name) VALUES ('$nanime')";

            if (!mysqli_query($dbcon, $sqlinsert)) 
            {
                die('Error inserting new record');      
            }

            else
            {
                $newrecord = "1 anime added";
                echo $newrecord;
            }

        }

我希望我的回答对你有所帮助,并且记住第一部分因为它如此重要。

这是完整的代码。

<html>
<head>
</head>
<body>
    <form method="post" action="">
        <input type="hidden" name="submitted" value="true" />
        <fieldset>
            <legend>New Content:</legend>
            <label>Name: 
            <input type="text" name="newcontent" /></label>
        </fieldset>
        <br />
        <input type="submit" name="submit" value="add new anime" />
    </form>
    <?php

    if (isset($_POST['submit'])) 
        {
            include_once('con_mysql.php');

            $nanime = $_POST['newcontent'];
            $sqlinsert = "INSERT INTO title (title_name) VALUES ('$nanime')";

            if (!mysqli_query($dbcon, $sqlinsert)) 
            {
                die('Error inserting new record');      
            }

            else
            {
                $newrecord = "1 anime added";
                echo $newrecord;
            }

        }

    ?>

</body>
</html>

答案 1 :(得分:0)

当包含打开连接的文件时,您似乎有拼写错误。而不是:

include('con_mysql.php.php');

我想它应该是:

include('con_mysql.php');

接下来是检查你的$ _POST。只有具有名称的字段存在,因此您需要更改条件:

if (isset($_POST['submit'])) {

为:

if (!empty($_POST)) {

最后你在查询中使用了未初始化的变量

所以改变那一行:

$sqlinsert = "INSERT INTO title (title_name) VALUES ('$newcontent')";

$sqlinsert = "INSERT INTO title (title_name) VALUES ('$nanime')";