Form won'不保存任何在数据库中


Form won't save anything in database

我的表单不会保存在我的数据库连接代码保存为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使用的形式,现在它也有未定义的变量:newrecord

保存在同一文件夹中的所有文件和newep.php也被创建。我的db包含表名为标题,内部标题有title_id INT(4)不空auto_increment然后title_name VARCHAR(255)不空。我希望你们能帮我解决这个问题,就像你们帮我搜索我需要的东西一样谢谢

编辑:

你的代码缺少了一些东西,但没关系,你仍然在学习,这是一个很好的开始,从错误中学习是很好的。

你错过的最重要的事情之一是你必须防止代码中的SQL注入,即使你的代码是完美的,但你的查询有这个问题,那么你就有麻烦了,你如何保护你的查询?SQL INJECTION

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

PDO是PHP数据对象的缩写。PDO是一种精简、一致的方式访问数据库。这意味着开发人员可以编写可移植的代码容易得多。PDO不像PearDB那样是一个抽象层。PDO是一个更像是使用统一API(应用程序)的数据访问层编程接口).

这很容易和简单。PDO和mysql有什么不同?

mysql和PDO的区别

第三件事,我将从弗雷德的评论之一,你需要开始使用错误报告,读这个:

错误报告

现在进入代码。

在你的代码中,你试图在从表单接收数据之前(在提交发生之前)从表单回显一个变量,所以你应该首先发送数据并接收它,然后做任何你想要的。

在你的代码中:

<?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>

当包含打开连接的文件时,看起来您有一个错别字。而不是:

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')";