我知道有多个线程存在此问题,但它们总是有不同的原因,而且没有一个线程似乎与我的相同。
我正在尝试从数据库访问一个值,连接很好,我已经多次收到此错误,并且通过将
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;
}
}
希望您能帮忙,谢谢您的期待。
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();
我(有点)现在明白了。我收到该错误是因为我尝试访问的表中没有记录...仍然不确定为什么它说“非对象”,这是我解决它的方法:
if($p_dom->num_rows > 0){
echo $precio1->precio;
}
这样,代码将在尝试访问表中的值之前检查表中是否有任何记录