gpt4 book ai didi

php - fatal error : Call to a member function error() on a non-object

转载 作者:行者123 更新时间:2023-11-29 02:22:35 24 4
gpt4 key购买 nike

我正在尝试关注 OOP PHP tutorial来自 phpacademy,我被困住了。我已经无数次检查了代码,但似乎无法弄清楚。其他人也问过类似的问题,但我没有找到适合我的解决方案。

我收到错误:

Fatal error: Call to a member function error() on a non-object in /var/www/vhosts/nightra.net/httpdocs/index.php on line 5

我对 OOP 比较陌生,所以我确信这是显而易见的事情。请各位专家指出正确的方向,好吗?

这是我的代码:

index.php

    <?php
require_once 'core/init.php';

$user = DB::getInstance()->get('users', array('username', '=', 'alex'));
if($user->error()){
echo 'No user';
}else{
echo 'OK';
}

初始化文件

<?php
session_start();

$GLOBALS['config'] = array(
'mysql'=>array(
'host' => '127.0.0.1',
'username' => 'myusernamehere',
'password' => 'mypasswordhere',
'db' => 'mydatabasename'
),
'remember'=>array(
'cookie_name' =>'hash',
'cookie_expiry' => 604800
),
'session'=>array(
'session_name' => 'user'
)
);

spl_autoload_register(function($class) {
require_once 'classes/' . $class . '.php';
});

require_once 'functions/sanitize.php';

DB.php

<?php 
class DB {
private static $_instance = null;
private $_pdo,
$_query,
$_error = false,
$_results,
$_count = 0;

private function __construct() {
try{
$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));

} catch (PDOException $e) {
die($e->getMessage());
}
}
public static function getInstance() {
if(!isset(self::$_instance)){
self::$_instance = new DB();
}
return self::$_instance;

}

public function query($sql, $params = array()){
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)){
$x=1;
if(count($params)){
foreach($params as $param){
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()){
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
}else{
$this->_error = true;
}
}
return $this;
}

public function action($action, $table, $where = array()){
if(count($where) === 3){
$operators = array('=', '>', '<', '>=', '<=');

$field = '$where[0]';
$operator = '$where[1]';
$value = '$where[2]';

if(in_array($operator, $operators)){
$sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";
if( ! $this->query($sql, array($value))->error()){
return $this;
}
}
}
return false;
}
public function get($table, $where){
return $this->action('SELECT *', $table, $where);

}
public function delete($table, $where){
return $this->action('DELETE', $table, $where);
}

public function error(){
return $this->_error;
}
}

Config.php

<?php
class Config {
public static function get($path = null){
if($path){
$config = $GLOBALS['config'];
$path = explode('/', $path);

foreach($path as $bit){
if(isset($config[$bit])){
$config = $config[$bit];
}
}

return $config;
}

return false;
}
}

最佳答案

查看 index.php 的代码和 DB.php

$user它的值(value)来自 BD::getDB::action 返回值的方法可能返回的方法 false , 所以你需要测试是否 $userfalse .

此时您还应该在数据库上手动测试查询。并尝试获取 PDO 错误(如果有)。

关于php - fatal error : Call to a member function error() on a non-object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com