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

时间:2016-11-24 15:54:02

标签: php mysql mysqli

我知道这个问题有多个线程,但它们总是有不同的原因,它们似乎都与我的相同。

我正在尝试从数据库访问一个值,连接很好,我刚刚犯了几次这个错误而且我已经通过更改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 \ bootproject \ 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;
    }
}

希望你能提供帮助,谢谢你的期待。

2 个答案:

答案 0 :(得分:-1)

$ result-> close(); 更多示例用于文档MySQLi query function

$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 :(得分:-1)

我(有点)现在想出来了。我收到了这个错误,因为我在试图访问的表中没有记录...仍然不确定为什么它说“非对象”,这是我如何解决它:

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

这样代码会在尝试访问它的值之前检查表上是否有任何记录