TransWikia.com

SQLSTATE[08P01]: : 7 ERROR: el mensaje de enlace (bind) entrega 1 parámetros, pero la sentencia preparada «pdo_stmt_00000003» requiere 0 (SQL:)

Stack Overflow en español Asked by Victor De Jesus on December 2, 2021

tengo este error que no se solucionar, quiero hacer una consulta a la base de datos que sea dinámica según el nombre que le pase, pero no para de salirme este mensaje:

SQLSTATE[08P01]: <>: 7 ERROR: el mensaje de enlace (bind) entrega 1 parámetros, pero la sentencia preparada «pdo_stmt_00000003» requiere 0 (SQL:)

¿La verdad que me estoy pediendo con la manera de hacer consultas de Laravel, por que no podria ser algo mas intuitivo y permitir que la variable se lea desde donde se lo estoy indicando?

este es el codigo:

public function store(Request $request){
       return = DB::select('select * from productor where productor.nombre = ?' 
       [$request-> nombre]);
    }

tambien aplica para esta consulta, de hecho esta es la importante, pero como tiene tanto contenido pensé en usar una mas simple que tenia con el mismo error

public function store(Request $request){
       return = DB::select(`select proveedor.id
                         from proveedor
                        where proveedor.id_proveedor in (
                              select proveedor.id_proveedor
                                from proveedor, 
                                     condicion_envio as envio, 
                                     pais
                               where envio.id_proveedor = proveedor.id_proveedor
                                     and pais.id_pais = envio.id_pais 
                                     and LOWER(pais.nombre) = ?
                               )`,
                    [$request-> nombre]);
    }

Entiendo que hay otras formas de hacerlo con laravel, ya es algo que he investigado, pero tengo una base de datos con 46 tablas a las que le tendria que agregar un modelo y tengo que hacer consultas a múltiples tabla y es algo que no he encontrado fácilmente por internet.

En conclusion Solo necesito una forma en la que la consulta así como la hice pueda cambiarme el valor de "?" por el valor de la variable $request -> nombre y que haga la consulta correctamente evitando el error 500

One Answer

De acuerdo con la documentación de Laravel

La forma de proceder para ejecutar consultas con sintaxis pura de SQL se hace así:

DB::select('select * from users where active = ?', [1]);

Haciendo uso del facade DB y del método select

Entonces tu consulta debe ser así

DB::select('select * from productor where productor.nombre = ?',[ $request-> nombre]);

Aunque como te dije esto sería una consulta muy fácil y más limpia de hacer con los métodos del query builder en todo caso y se vería así:

Modelo::select('*')->whereNombre($request->nombre)->first();

Answered by BetaM on December 2, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP