TLDR;我重新调整了PHP注册/登录脚本以满足我的需求。现在,我有错误。我最初的目的是创建一个家庭作业日志,是的,但回想起来,这对我来说也是一种学习经验,改进了我的PHP,因为我对它的了解相当差。我知道这篇文章可能看起来含糊不清,但我自己找不到解决方案,所以我来这里寻求帮助。
错误是表单根本不会提交,它会显示错误 在编码中配置的消息给我。我尝试删除此错误, 并以其他方式搞乱它,但没有任何效果。在我看来,是什么 尊重某事,因为编码器应该设置错误,不是吗?
所以,我正在尝试创建一个可以通过表单更新的作业日志。我对PHP不是很熟悉,但我对编码的知识至少足以承担这个项目。由于我缺乏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...";
}
}
}
?>
在这个问题出现之前,我之前有一个与MySQL_Query停止相关的错误,我显然能够找到解决方案,但我不相信这是正确的,因为它只会造成新的错误。< / p>
这是代码行:
$res = mysqli_query($conn, $query);
dbconnect.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:在修复了一些愚蠢的拼写错误,并将原始代码复习回我的后,我成功地设法停止了错误。该系统现已全面运作。
答案 0 :(得分:1)
你的sql insert语句中有一个错误(值括号末尾有一个额外的逗号):
'$date_assigned',
'$date_due',
'$description', )";
如果您对数据库连接有任何其他问题,可以回显函数mysqli_connect_error()
以了解它是什么。它会打印整个错误消息。
是的,正如对该问题的一条评论所说,在ini_set('display_errors', 1);
之后也添加error_reporting
,所以你也可以看到常见的php错误消息。另一种方法是使用error_log()
函数在php控制台上编写调试消息。
答案 1 :(得分:0)
1)将$dbcon
替换为$conn
行中的mysqli_query
。所以,它一定是:
$res = mysqli_query($conn, $query);
否则您收到错误:
警告:mysqli_query()期望参数1为mysqli,boolean 给定
2)在sql语句中,您必须删除最后一个逗号。必须是:
... '$description' )";
答案 2 :(得分:0)
以下答案,以及我最初错过但我自己找到的一些额外代码,帮助我解决了这个问题。
你的sql insert语句中有一个错误(一个额外的逗号 值末尾括号):
'$date_assigned', '$date_due', '$description', )";
如果您对数据库连接有任何其他问题,可以回复函数
mysqli_connect_error()
以了解 那是什么。它会打印整个错误消息。
添加
ini_set('display_errors', 1)
;在error_reporting
之后
1)将
$dbcon
替换为mysqli_query行中的$conn
。