我正在设置应连接到数据库的Android应用程序。我正在为注册界面编写php脚本,但始终收到此错误:
“未捕获的错误:在/opt/lampp/htdocs/Android/includes/DbOperations.php:20中对成员函数prepare()的调用为null 堆栈跟踪:
0 /opt/lampp/htdocs/Android/v1/RegistrationUser.php(27):DbOperations-> createStudent('GDS0000','5F002','Gloria','Desideri','F','07 / 10/2000”,“ gloriadesideri0 ...”,“ ---- ++++++”)
1 {main}
第20行上的/opt/lampp/htdocs/Android/includes/DbOperations.php中抛出的
我正在使用 xampp 连接到运行MySql 5.7的 IONOS 服务器 我已经尝试在本地函数中同时声明 $ con 和 $ db ,但是没有用。我正在用邮递员来测试我的代码。
<?php
class DbOperations{
private $con;
public function _construct()
{
require_once dirname(_FILE_).'/DbConnect.php';
$db= new DbConnect();
$this->con = $db->connect();
}
public function createStudent($IDStudente, $codClasse,
$Nome, $Cognome, $Sesso, $DataNascita, $email, $Password)
{
$password= md5($Password);
if($stmt = $this->con->prepare("INSERT INTO Studenti ('IDStudente', 'codClasse', 'Nome', 'Cognome', 'Sesso' , 'DataNascita', 'email', 'Password') VALUES (? , ?, ?, ?, ?, ?, ?, ?);"))
{
$stmt->bind_param("ssssssss", $IDStudente, $codClasse, $Nome, $Cognome, $Sesso, $DataNascita, $email, $Password );
if($stmt->execute())
{
return true;
}
else{
return false;
}
}
else
{
$error = $mysqli->errno . ' ' . $mysqli->error;
echo $error;
}
}
}
?>
这是DBOperation类,它调用方法
if($_SERVER['REQUEST_METHOD']=='POST'){
if(isset($_POST['IDStudente']) and
isset($_POST['codClasse']) and
isset($_POST['Nome']) and
isset($_POST['Cognome']) and
isset($_POST['Sesso']) and
isset($_POST['DataNascita']) and
isset($_POST['email'])and
isset($_POST['Password']))
{
$db= new DbOperations();
if($db -> createStudent(
$_POST['IDStudente'],
$_POST['codClasse'],
$_POST['Nome'],
$_POST['Cognome'],
$_POST['Sesso'],
$_POST['DataNascita'],
$_POST['email'],
$_POST['Password']
)){
$response['error']=false;
$response['message']="Studente registrato";
}
else
{
$response['error']=true;
$response['message']="Studente non registrato";
}
}
这是注册中给我带来麻烦的部分。
我期望输出“ Studente registrato”,并且由于我在测试中输入了所有值,因此用户实际上出现在数据库中。但是我一直收到这个错误。
编辑
我通过将$ stmt-> bind_param放在if语句中来处理错误,但是现在我无法让用户注册。我没有收到任何错误,但无法在表中插入值。我更新了代码。