我的表单不会保存在我的数据库连接代码保存为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')";