对于我的项目,我试图通过使用数据库中过去学生的数据来预测过去学生的A级数学成绩。所以过去的学生1在数学A级中获得了A。在第一年的考试中,他们获得了计算机A,物理B,化学A,男性和97%的出勤率。如果现在一年级的学生有相同的成绩,相同的科目,男性和相同的出勤率,我想说他们将获得相同的成绩。
我的代码中的错误说:"致命错误:未捕获的异常'PDOException',消息为'SQLSTATE[42000]:语法错误或访问冲突:1064 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在/home/u717042829/public_html/predicter.php:70 中的第 1 行的 'grade1 = 'Maths', 'A'' 附近使用的正确语法 堆栈跟踪:#0/home/u717042829/public_html/predicter.php(70): PDOStatement->execute() #1 {main} 扔在第 70 行的/home/u717042829/public_html/predicter.php 中"
第 70 行是:
$query->execute();
.
<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
require("includes/config.php");
//if not logged in redirect to login page
if(!$user->is_logged_in()){ header('Location: login.php'); }
//define page title
$title = "Predict a Student's Grade";
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Past Student</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<?php
if (isset($_POST['name'])) {
$name = $_POST['name'];
$subject1 = $_POST['subject1'];
$grade1 = $_POST['grade1'];
$subject2 = $_POST['subject2'];
$grade2 = $_POST['grade2'];
$subject3 = $_POST['subject3'];
$grade3 = $_POST['grade3'];
$subject4 = $_POST['subject4'];
$grade4 = $_POST['grade4'];
$attendance = $_POST['attendance'];
$gender = $_POST['gender'];
$query = $db->prepare("SELECT * FROM paststudent WHERE subject1, grade1 = :subject1, :grade1");
$query->bindParam(':subject1', $subject1);
$query->bindParam(':grade1', $grade1);
$query->execute();
}
?>
<h1> Your predicted grade is <?php echo $query ?> </h1>
</body>
</html>
现在我正在小步骤中将主题 1 与 1 级相匹配,然后做主题 2 2 级,因为我也得到了它的工作。
查询
的这一部分看起来不正确:
WHERE subject1, grade1 = :subject1, :grade1
您很可能打算将其更改为如下所示:
WHERE subject1 = :subject1 AND grade1 = :grade1
因此,该行的最终版本应为:
$query = $db->prepare( " SELECT * FROM paststudent "
. " WHERE subject1 = :subject1 AND grade1 = :grade1");
我建议阅读一些有关SQL基础知识的教程。
这不是你从PDO获得结果的方式,试试
<body>
<table>
....
$query->execute();
}
while($row = $query->fetch(PDO::FETCH_ASSOC)){
echo "<tr><td>".$row['user']."</td></tr>"; --change user to what the column is actually called
}
?>
</table>
</body>
</html>