PHP表单拒绝提交,错误原因未知
TLDR;我重新调整了PHP注册/登录脚本的用途,以满足我的需要。现在,我犯了错误。我最初的目的是创建一个家庭作业日志,是的,但现在回想起来,这对我来说也是一次学习经验,提高了我的PHP,因为我的PHP知识相当贫乏。我知道这篇文章可能显得含糊不清,但我自己找不到解决办法,所以我来这里寻求帮助 错误是表单根本不会提交,它会显示错误 在编码中配置的给我的消息。我试图消除这个错误, 用其他的方式来摆弄它,但什么都没用。在我看来,什么 将某件事视为错误应该由编码员设置,不是吗 所以,我试图创建一个家庭作业日志,我可以通过一个表单来更新它。我对PHP不是很熟悉,但至少我有足够的编码知识来承担这个项目。由于缺乏PHP编码技能,我找到了一个PHP注册/登录表单,然后根据自己的需要重新设计了该表单。我觉得好像我做的每件事都是正确的,似乎找不到错误,所以我来到这里。我已经多次阅读了代码,并尝试了许多解决方案,但都无济于事 以下是初始PHP代码:PHP表单拒绝提交,错误原因未知,php,mysql,mysqli,Php,Mysql,Mysqli,TLDR;我重新调整了PHP注册/登录脚本的用途,以满足我的需要。现在,我犯了错误。我最初的目的是创建一个家庭作业日志,是的,但现在回想起来,这对我来说也是一次学习经验,提高了我的PHP,因为我的PHP知识相当贫乏。我知道这篇文章可能显得含糊不清,但我自己找不到解决办法,所以我来这里寻求帮助 错误是表单根本不会提交,它会显示错误 在编码中配置的给我的消息。我试图消除这个错误, 用其他的方式来摆弄它,但什么都没用。在我看来,什么 将某件事视为错误应该由编码员设置,不是吗 所以,我试图创建一个家庭作
<?php
include_once 'dbconnect.php';
$error = false;
if ( isset($_POST['btn-signup']) ) {
// clean user inputs to prevent sql injections
$course_name = trim($_POST['course_name']);
$course_name = strip_tags($course_name);
$course_name = htmlspecialchars($course_name);
$period = trim($_POST['period']);
$period = strip_tags($period);
$period = htmlspecialchars($period);
$teacher = trim($_POST['teacher']);
$teacher = strip_tags($teacher);
$teacher = htmlspecialchars($teacher);
$date_assigned = trim($_POST['date_assigned']);
$date_assigned = strip_tags($date_assigned);
$date_assigned = htmlspecialchars($date_assigned);
$date_due = trim($_POST['date_due']);
$date_due = strip_tags($date_due);
$date_due = htmlspecialchars($date_due);
$description = trim($_POST['description']);
$description = strip_tags($description);
$description = htmlspecialchars($description);
// if there's no error, continue to signup
if( !$error ) {
$query = "INSERT INTO homework_assignments(course_name,
period,
teacher,
date_assigned,
date_due,
description)
VALUES(
'$course_name',
'$period',
'$teacher',
'$date_assigned',
'$date_due',
'$description', )";
$res = mysqli_query($dbcon, $query);
if ($res) {
$errTyp = "success";
$errMSG = "Successfully registered, you may login now";
unset($course_name);
unset($period);
unset($teacher);
unset($date_assigned);
unset($date_due);
unset($description);
} else {
$errTyp = "danger";
$errMSG = "Something went wrong, try again later...";
}
}
}
?>
php也有类似的错误,但我也“修复”了这些错误,并且仍然怀疑我是否犯了错误
以下是dbconnect.php文件:
<?php
// this will avoid mysql_connect() deprecation error.
error_reporting( ~E_DEPRECATED & ~E_NOTICE );
// but I strongly suggest you to use PDO or MySQLi.
define('DBHOST', 'localhost');
define('DBUSER', 'root');
define('DBPASS', '');
define('DBNAME', 'school');
$conn = mysqli_connect(DBHOST,DBUSER,DBPASS);
$dbcon = mysqli_select_db($conn, DBNAME);
if ( !$conn ) {
die("Connection failed : " . mysqli_error());
}
if ( !$dbcon ) {
die("Database Connection failed : " . mysqli_error());
}
顶部的警告信息来自于最初的开发人员,但是,由于我的知识有限,我实际上不知道如何将其完全转换为那个,或者我是否已经这样做了。我曾试图参考手册,但它只是一本手册,不是指南,这就是为什么我来到这里寻求体验社区的帮助
编辑1:在修复了一些愚蠢的打字错误,并将原始代码返回给我之后,我成功地阻止了错误。系统现在已完全运行。sql insert语句中有一个错误,在值括号的末尾加了一个逗号:
'$date_assigned',
'$date_due',
'$description', )";
'$date_assigned',
'$date_due',
'$description', )";
如果您在数据库连接方面有任何其他问题,您可以回显函数mysqli\u connect\u error来了解这是什么问题。它会打印整个错误消息
是的,正如一位对此问题的评论所说,还添加了ini_集合“显示错误”,1;在错误报告之后,您也可以看到常见的php错误消息。另一种方法是使用error_log函数在php控制台上编写调试消息。1在mysqli_查询行中将$dbcon替换为$conn。因此,它必须是:
$res = mysqli_query($conn, $query);
... '$description' )";
否则,您将收到错误:
警告:mysqli_查询要求参数1为mysqli,布尔值
给定
2在sql语句中,必须删除最后一个逗号。它必须是:
$res = mysqli_query($conn, $query);
... '$description' )";
下面的答案,加上我最初错过但自己设法找到的一些额外代码,帮助我解决了这个问题
sql insert语句中出现错误,在 结束值括号:
'$date_assigned',
'$date_due',
'$description', )";
'$date_assigned',
'$date_due',
'$description', )";
如果您在数据库连接方面有任何其他问题,可以回显函数mysqli\u connect\u error以了解
那是什么。它会打印整个错误消息
加
ini设置“显示错误”,1;错误报告后
1在mysqli_查询行中将$dbcon替换为$conn
请添加ini\u集合“显示错误”,1;错误报告后,请重试。如果您看到任何错误,请告诉我们,并将其作为“编辑1”发布在您的答案中。这修复了初始未编辑代码中的错误,这意味着表单在我触摸它之前的状态。我把它归结为与unset函数有关。我还发现PHP的一部分对于我来说是不需要的,所以我删除了它,并且在未编辑的版本上功能仍然成功。这个版本是这样的:我将它添加为edit1,因为它太长了。我不明白你的意思。很抱歉你看到我的答案了吗?在真正理解了你的答案的含义后,我现在意识到这个回答听起来有多疯狂。我一次应用了多个解决方案,还以为是你的解决方案让它起了作用。这种反应听起来多么疯狂。。。我的还是你的?:-最后,重要的是你的问题解决了;-祝你好运