Autor
|
Tema: Método PREPARE de PHP me arroja ERROR FATAL! (Leído 2,297 veces)
|
big_ed
Desconectado
Mensajes: 82
|
Hola a todos Php me arroja el siguiente error: Fatal error: Uncaught Error: Call to a member function bind_param() on bool in /opt/lampp/htdocs/php y sql/practice/zend.php:17 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/php y sql/practice/zend.php on line 17Lo que se me ocurre es que pueda estar exigiendo que incluya el campo 'id' (y su valor) en la consulta del PREPARE, pero para mi hacer eso no tiene sentido porque se supone que los valores del campo 'id' se generan solos automaticamente. Dejo mi código, y más abajo mi base de datos:<?php $MARIA = new mysqli("localhost", "root", "", "EMPLOYER");
if ( $MARIA->connect_error ) { echo "Falló la conexión!"; } else { $PRE = $MARIA->prepare( "INSERT INTO EMPLOYER (nombre, sexo, edad, puesto, sueldo, correo, movil, casa) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" ); $PRE->bind_param('ssisfsis', $nombre, $sexo, $edad, $puesto, $sueldo, $correo, $movil, $casa);
$nombre = 'Gian'; $sexo = 'Hombre'; $edad = 25; $puesto = 'Marketing'; $sueldo = 3.500; $correo = 'gian@mark.es'; $movil = 989543723; $casa = 'Av. Los Sauces';
$PRE->execute();
echo "Los datos fueron enviados!";
$MARIA->close(); } ?>
|
|
|
En línea
|
|
|
|
MinusFour
|
¿Porque no checas el error que tienes en el prepare? Ese error que tienes es simplemente porque $MARIA-prepare() te regreso falso, que significa que hay un error con tu enunciado ahí. Para eso tienes que usar mysqli::error: if($PRE === false) throw new Exception($MARIA->error);
|
|
|
En línea
|
|
|
|
big_ed
Desconectado
Mensajes: 82
|
¿Porque no checas el error que tienes en el prepare? Ese error que tienes es simplemente porque $MARIA-prepare() te regreso falso, que significa que hay un error con tu enunciado ahí. Para eso tienes que usar mysqli::error: if($PRE === false) throw new Exception($MARIA->error);
No funcionó con ese código que me pusiste, pero ya me di cuenta donde está el error al revisar minusiozamente el codigo y despavilar. FUe un error estúpido de mi parte, en el INSERT estaba escrito mal el nombre de la tabla, el cual era DATOS, en lugar de EMPLOYER (employer es la base de datos, me confundí). Segundo: En bind_param('ssisfsis' ) No existe el argumento F (de float) sino D (de double). A pesar de que el campo en mi base de datos es de tipo float y no double, no me genera error. Corrigiendo ambas cosas, funcionó. Disculpen las molestias. Pregunta aparte, para no abrir otra tema (si no tendré que hacerlo): ¿con estas sentencias preparadas ya no necesito preocuparme por temas de seguridad? Es decir ¿asi puedo mandar los datos de manera medianamente segura? ¿o me falta algo? Claro que antes de hacer el 'prepare' debo impedir el ingreso de datos incorrectos, con las expresiones regulares de java script y luego de php. Eso lo tengo claro.
|
|
|
En línea
|
|
|
|
engel lex
|
No funcionó con ese código que me pusiste ese codigo no era para que funcionara, era para que consiguieras el error, ese codigo lo que hace es no pasar la consulta erronea ciegamente, sino verifica si fue valida... ¿con estas sentencias preparadas ya no necesito preocuparme por temas de seguridad? Es decir ¿asi puedo mandar los datos de manera medianamente segura? ¿o me falta algo? si ayuda, no es super seguro, pero sobre todo ayuda a limpiar los errores dejados atrás por ti como humano
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
big_ed
Desconectado
Mensajes: 82
|
ese codigo no era para que funcionara, era para que consiguieras el error, ese codigo lo que hace es no pasar la consulta erronea ciegamente, sino verifica si fue valida...
ya lo sé pero digo no arrojó ningún error.. lo mismo que no ponerlo si ayuda, no es super seguro, pero sobre todo ayuda a limpiar los errores dejados atrás por ti como humano
si, nada es 100% seguro, pero yo me refiero a si con eso ya puedo subir datos , digamos teniendo la idea de que ya lo estoy haciendo de una forma medianamente segura. Porque por ejemplo si yo estuviera subiendo directamente con QUERY() ustedes me dirian que use las sentencias preparadas, como diciendo "tu codigo es inseguro"...por eso pregunto, ahora, con este codigo (prepare), ya es algo seguro, quiza no al 100%, pero al menos lo basico o medio?
|
|
|
En línea
|
|
|
|
engel lex
|
si es seguro, esto sirve para filtrar básicamente cualquier ataque de inyección que son los mas comunes, los parámetros afiliados son tratados como data y no van a ser mal interpretados y ejecutados maliciosamente...
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
big_ed
Desconectado
Mensajes: 82
|
si es seguro, esto sirve para filtrar básicamente cualquier ataque de inyección que son los mas comunes, los parámetros afiliados son tratados como data y no van a ser mal interpretados y ejecutados maliciosamente...
ok gracias y gracias tambien al otro usuario
|
|
|
En línea
|
|
|
|
big_ed
Desconectado
Mensajes: 82
|
¿Porque no checas el error que tienes en el prepare? Ese error que tienes es simplemente porque $MARIA-prepare() te regreso falso, que significa que hay un error con tu enunciado ahí. Para eso tienes que usar mysqli::error: if($PRE === false) throw new Exception($MARIA->error);
si es seguro, esto sirve para filtrar básicamente cualquier ataque de inyección que son los mas comunes, los parámetros afiliados son tratados como data y no van a ser mal interpretados y ejecutados maliciosamente...
Hola otra vez. Estoy un poco confundido con 'prepare' al momento de retornar los datos de la DB a mi web. Primero ¿es necesario seguir usando Prepare para retornar los datos? Pregunto porque , en el caso anterior me parecia necesario porque debia cuidar los valores que entraban de afuera a mi base de datos, pero en el caso de que quiera "sacar" los valores de mi db no me parece que deba tomar medidas (o sea el proceso es interno, no a la vista de terceros). Yo sabía hacer esto con QUERY() y MSQLI_FETCH_ASSOC() pero ahora PREPARE() me confunde y no sé como llamar a los datos, me está dando error, estoy haciendo algo mal. Si me pudieran poner un ejemplo de como retornar los datos con prepare por favor, con la siguiente sentencia simple de ejemplo.. . SELECT nombre FROM datos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
error prepare statement
Java
|
sapito169
|
3
|
9,082
|
24 Febrero 2009, 19:53 pm
por cornell
|
|
|
Exe desempacado de winlicense, pero arroja error, que puede ser?
Ingeniería Inversa
|
Fucko
|
4
|
5,038
|
26 Marzo 2011, 07:36 am
por apuromafo CLS
|
|
|
[MOD] Mensaje de error: Dma controller error - fatal error system halted
« 1 2 »
Hardware
|
evgeni1970
|
14
|
22,242
|
6 Noviembre 2011, 22:27 pm
por evgeni1970
|
|
|
Fatal error: Call to a member function prepare() on a non-object in
PHP
|
Makroll
|
3
|
5,899
|
8 Noviembre 2013, 01:02 am
por #!drvy
|
|
|
VBScript Funcion SaveAs arroja error
Scripting
|
guillehampp
|
4
|
4,063
|
11 Febrero 2015, 17:49 pm
por guillehampp
|
|