我的表单不会保存在我的数据库中 连接保存为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。我希望你们可以帮助我解决这个问题,因为你们只是在寻找我需要的东西帮助我。谢谢
答案 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的一条评论中得出结论,您需要开始使用错误报告,请阅读:
现在到代码。
在您的代码中,您尝试在从表单接收数据之前(在提交发生之前)回显表单中的变量,因此您应首先发送数据并接收数据,然后随意执行任何操作。
在您的代码中:
<?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')";