Recoverable fatal error: Object of class mysqli_result could not be converted to string en PHP

publicado por: Anonymous

Necesito hacer funcionar el siguiente script:

<?php 
if(!isset($_GET["id"])) {
    print "<script>alert("No se pudo identificar marca. Consulte la base de datos.");window.location='../editar_marca.php';</script>";
    exit();
} else{
    require_once ("../../php/conexion.php");

    $id = $_GET['id'];
    $nombre = $_GET['nombre'];
    $descripcion = $_GET['descripcion'];
    $proveedor = $_GET['proveedor'];
    $id_proveedor_seleccionado = "SELECT id FROM proveedores WHERE nombre = "$_GET[proveedor]"";
    $id_proveedor = $con->query($id_proveedor_seleccionado);
    $created_at = date('d-m-Y'); //Hoy en el formato dia-mes-año

    $sql = "UPDATE marcas SET
    nombre = '$nombre',
    descripcion = '$descripcion',
    proveedor = '$proveedor',
    id_proveedor =  '$id_proveedor',
    WHERE id = '$id'";

    $query = $con->query($sql);
    if($query!=null){
        print "<script>alert("Edición exitosa.");window.location='../editar_marca.php';</script>";
    }
}
?>

La idea es que actualice la información de una tabla en la que se vuelcan datos de diferentes MARCAS.
Previamente, se crea la marca con el nombre, una descripción, y el proveedor previamente cargado con su respectivo id.

El problema que tengo es que necesito recuperar el id del proveedor de la tabla PROVEEDORES y volcarlo en la tabla de MARCAS. En este caso, necesito hacer una actualización, debido a que el script se refiere a una edición de los datos cargados previamente.

El resultado que me da es el siguiente:

Recoverable fatal error: Object of class mysqli_result could not be
converted to string in
C:xampphtdocsestudiomanager.comsystemproductosphpguardar_marca_editada.php
on line 19

La línea 19 se refiere a UPDATE, en la parte del id_proveedor=$id_proveedor.

Además, he hecho echo de todas las variables y se manifiestan correctamente, sobre todo la variable $id_proveedor_seleccionado, pero no puedo dar con la forma correcta de que me tome el dato del id del proveedor seleccionado y volcarlo en la tabla.

solución

El error se debe a que estás intentando convertir un objeto en una cadena de texto (string).

Puedes comprobarlo si ejecutas:

var_dump($id_proveedor);

Intenta lo siguiente:

$result_id_proveedor = $con->query($id_proveedor_seleccionado);
$obj = $result_id_proveedor->fetch_object();
$id_proveedor = $obj->id;

Ahora en $id_proveedor hay un dato tipo string y puedes usarlo en la siguiente consulta, tambien puedes aplicar lo siguiente:

$pro = $result_id_proveedor->fetch_assoc();
$id_proveedor = $pro['id'];

Nota: Cuando quieras que una consulta te retorne un solo valor limita la misma con LIMIT 1.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *