我知道这个问题有多个线程,但它们总是有不同的原因,它们似乎都与我的相同。
我正在尝试从数据库访问一个值,连接很好,我刚刚犯了几次这个错误而且我已经通过更改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;
}
}
希望你能提供帮助,谢谢你的期待。
答案 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;
}
这样代码会在尝试访问它的值之前检查表上是否有任何记录