从数据库访问变量时尝试获取非对象的属性

问题描述 投票:0回答:2

我知道有多个线程存在此问题,但它们总是有不同的原因,而且没有一个线程似乎与我的相同。

我正在尝试从数据库访问一个值,连接很好,我已经多次收到此错误,并且通过将

fetch_object()
更改为
fetch_assoc()
(我不知道)为什么这有效)..但这里似乎没有任何作用:

include 'structure.php';
include 'conexion.php';

$con = new conexion();
$bd = $con->conect();

$querycliente = $con->obtener('cliente');
$row = $querycliente->fetch_object();

$id_cliente = $row->id_cliente;

$p_dom = $con->obtener('presupuesto', " cliente_id_cliente = '".$id_cliente."' AND servicio = 'dominio' ");
$p_host = $con->obtener('presupuesto', " cliente_id_cliente = '".$id_cliente."' AND servicio = 'hosting' ");
$p_correos = $con->obtener('presupuesto', " cliente_id_cliente = '".$id_cliente."' AND servicio = 'correos' ");

$precio1 = $p_dom->fetch_object();
$precio2 = $p_host->fetch_object();
$precio3 = $p_correos->fetch_object();

我不断收到此错误:尝试在第 26 行获取 C:\xampp\htdocs ootproject\precios.php 中非对象的属性(以及在我尝试从数据库访问值的其他行中),它只在第一次起作用,在

$id_cliente = $row->id_cliente;
,那为什么其余的不起作用?

这是我正在使用的类和方法(它们工作正常,因为我已经在代码的其余部分中多次使用了它们):

class conexion{
    
    public $dbase;
    
    function conect(){
        $this->dbase = new mysqli('xxxx', 'xxxx', 'xxxx','xxxx');
    }
    
    function obtener($tabla, $where = ""){
        $where = ($where != "") ? 'WHERE '.$where: '';
        $query = $this->dbase->query('SELECT * FROM `'.$tabla.'` '.$where);
        return $query;
    }
}

希望您能帮忙,谢谢您的期待。

php mysql mysqli
2个回答
-1
投票

use $result->close();文档中有更多示例MySQLi查询函数

$p_dom = $con->obtener('presupuesto', " cliente_id_cliente = '".$id_cliente."' AND servicio = 'dominio' ");
$precio1 = $p_dom->fetch_object();
$p_dom->close();

$p_host = $con->obtener('presupuesto', " cliente_id_cliente = '".$id_cliente."' AND servicio = 'hosting' ");
$precio2 = $p_host->fetch_object();
$p_host->close();

-1
投票

我(有点)现在明白了。我收到该错误是因为我尝试访问的表中没有记录...仍然不确定为什么它说“非对象”,这是我解决它的方法:

if($p_dom->num_rows > 0){
     echo $precio1->precio;
}

这样,代码将在尝试访问表中的值之前检查表中是否有任何记录

© www.soinside.com 2019 - 2024. All rights reserved.