我是PHP的初学者。我正在尝试从数据库中获取数据,但我遇到以下错误 “致命错误:在第22行的C:\ xampp \ htdocs \ phpExamPrep \ studentDB.php中的非对象上调用成员函数query()” 对不起,我必须包含所有代码,它只是为了帮助你帮助我。谢谢 我有以下课程
class database
{
private static $dsn = 'mysql:local=localhost;dbname=test1';
private static $username ='me';
private static $password ='me';
public static $db;
private function __construct()
{
}
public static function dataConnect()
{
if(isset(self::$db))
{
try
{
self::$db = new PDO(self::$dsn, self::$username, self::$password);
}
catch(PDOException $e)
{
$error_message = $e->getMessage();
include 'database_error.php';
exit();
}
}
return self::$db;
}
}
class studentDB
{
public static function getAllRecords()
{
require 'database.php';
$query = 'select * from student';
$db = database::dataConnect();
$result = $db->query($query); //This part is giving error
$students = array();
foreach($result as $row)
{
$stud = new student($row['firstname'],$row['lastname']);
$stud->setID($row['id']);
$students[]=$stud;
}
return $students;
}
}
<?php
include 'studentDB.php';
$stx =studentDB::getAllRecords();
foreach ($stx as $r)
{
echo $r->getFirstName().' '.$r->getLastName().' '.$r->getID();
}
?>
when I changed if(isset(self::$db)) to if(!isset(self::$db)), the error becomes
“警告:在第25行的C:\ xampp \ htdocs \ phpExamPrep \ studentDB.php中为foreach()提供的参数无效”
答案 0 :(得分:1)
我想这个
if(isset(self::$db))
必须在
中更改if ( ! isset(self::$db) )
因为你想设置self::$db
,如果它没有设置而不是相反。
从您发布的代码片段中看起来就像是这个调用
$db = database::dataConnect();
返回对$db
的空引用,因此您无法在空引用上调用query
。