-1
我正在尝试使用OOP概念在PHP中编写Web应用程序,并且我构建了一个类和一个处理文件以将学生对象添加到数据库。但它不起作用。这是我的代码。我写了一个扩展User类的Student类。这是用户类。将值插入到MYSQL数据库
<?php
class User
{
private $firstName;
private $lastName;
private $email;
private $gender;
private $phoneNumber;
private $profilePicture;
public function getFirstName()
{
return $this->firstName;
}
public function getLastName()
{
return $this->lastName;
}
public function getEmail()
{
return $this->email;
}
public function getPassword()
{
return $this->password;
}
public function getGender()
{
return $this->gender;
}
public function getPhoneNumber()
{
return $this->phoneNumber;
}
public function getProfilePicture()
{
return $this->profilePicture;
}
public function setFirstName($firstName)
{
$this->firstName = $firstName;
}
public function setLastName($lastName)
{
$this->lastName = $lastName;
}
public function setEmail($email)
{
$this->email = $email;
}
public function setPassword($password)
{
$this->password = $password;
}
public function setGender($gender)
{
$this->gender = $gender;
}
public function setPhoneNumber($phoneNumber)
{
$this->phoneNumber = $phoneNumber;
}
public function setProfilePicture($profilePicture)
{
$this->profilePicture = $profilePicture;
}
}
然后班级学生
<?php
include '../Functions/mainfunction.php';
include 'User.php';
class Student extends User
{
private $matricNumber;
private $level;
private $faculty;
private $department;
private $unit;
private $result;
private $friends;
public function getMatricNumber()
{
return $this->matricNumber;
}
public function getLevel()
{
return $this->level;
}
public function getFaculty()
{
return $this->faculty;
}
public function getDepartment()
{
return $this->department;
}
public function getUnit()
{
return $this->unit;
}
public function getResult()
{
return $this->result;
}
public function getFriends()
{
return $this->friends;
}
public function setMatricNumber($matricNumber)
{
$this->matricNumber = $matricNumber;
}
public function setFaculty($faculty)
{
$this->faculty = $faculty;
}
public function setDepartment($department)
{
$this->department = $department;
}
public function setUnit($unit)
{
$this->unit = $unit;
}
public function setResult($result)
{
$this->result = $result;
}
public function setFriends($friends)
{
$this->friends = $friends;
}
public function setLevel($level)
{
$this->level = $level;
}
public static function createStudent($student, $password)
{
//Open a Database Connection
$connect = dbcon();
//Get Student object fields from the create user page
$firstName = $student->getFirstName();
$lastName =$student->getLastName();
$email = $student->getEmail();
$gender = $student->getGender();
$faculty = $student->getFaculty();
$department = $student->getDepartment();
$unit = $student->getUnit();
$level = $student->getLevel();
//Encrypt Password
$encryptedPassword = password_hash($password, PASSWORD_DEFAULT);
$matricNumber = $student->getMatricNumber();
//Insert User to database
$query = 'INSERT INTO `student` (`First Name`, `Last Name`, `Gender`, `Email Address`, `Password`, `Faculty`, `Department`, `Unit`, `Matric Number`, `Level`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
$statement = $connect->prepare($query);
$connect->prepare($query)->bind_param('sssssssssi', $firstName, $lastName, $gender, $email, $encryptedPassword, $faculty, $department, $unit, $matricNumber, $level);
if ($statement->execute()) {
$connect->close();
// echo $encryptedPassword . 'true';
return true;
} else {
$connect->close();
// echo $encryptedPassword . 'false';
return false;
}
}
}
而且这是做加法的代码。
<?php
require('../Classes/Student.php');
$student = new Student;
$firstName = htmlspecialchars($_POST['firstName']);
$lastName = htmlspecialchars($_POST['lastName']);
$email = htmlspecialchars($_POST['email']);
$matricNumber = htmlspecialchars($_POST['matricNumber']);
$faculty = htmlspecialchars($_POST['faculty']);
$department = htmlspecialchars($_POST['department']);
$unit = htmlspecialchars($_POST['unit']);
$level = htmlspecialchars($_POST['level']);
$gender = htmlspecialchars($_POST['gender']);
$password = htmlspecialchars($_POST['password']);
$student->setFirstName($firstName);
$student->setLastName($lastName);
$student->setEmail($email);
$student->setMatricNumber($matricNumber);
$student->setFaculty($faculty);
$student->setDepartment($department);
$student->setUnit($unit);
$student->setLevel($level);
$student->setGender($gender);
$created = $student::createStudent($student, $password);
if ($created) {
redirect('../Signed_in/Index.php');
}else{
redirect('../index.php');
}
最后,我的数据库连接的代码和我的定义方法“重定向”
<?php
function redirect($url){
header("Location:{$url}");
exit;
}
function dbcon(){
$connect = new mysqli('localhost', 'username', 'password', 'database-name');
return $connect;
}
能否请你告诉我,我要去哪里错了。它不会给出任何错误消息。这是说我的bind_param函数首先给出了一个布尔值。但是现在代码只是将我重定向到else语句应该引导你到的索引页面,并且学生不会被添加到我的数据库中,它不会告诉我为什么。 如果需要这是我的HTML表格
<form class="sign_up_form" method="post" action="Logic/create-student.php">
<input class="sign_up_input" name="firstName" placeholder="First Name" />
<input class="sign_up_input" name="lastName" placeholder="Last Name" />
<input class="sign_up_input long" name="email" placeholder="Email Address" />
<input class="sign_up_input long" name="password" placeholder="Password" type="password" />
<input class="sign_up_input long" name="matricNumber" placeholder="Matric Number" />
<input class="sign_up_input" name="faculty" placeholder="Faculty" />
<input class="sign_up_input" name="department" placeholder="Department" />
<input class="sign_up_input" name="unit" placeholder="Unit" />
<select name="level" class="sign_up_input">
<option>100</option>
<option>200</option>
<option>300</option>
<option>400</option>
<option>500</option>
</select>
<select name="gender" class="sign_up_input">
<option>Male</option>
<option>Female</option>
</select>
<input class="sign_up_input" placeholder="Validation Pin" />
<input class="sign_up_submit sign_up_input long" type="submit" value="Sign Up" />
<div class="special_hr_or long">
<span class="special_text">Or</span>
</div>
</form>
在方法createStudent中,行if($ statement-> execute()){'''将始终返回true。相反,在if之前执行语句,然后测试受影响大于0.(或== 1) –
的记录。我已经这样做了,但没有添加到数据库中。这只是表现为虚假... –