elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Método PREPARE de PHP me arroja ERROR FATAL!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Método PREPARE de PHP me arroja ERROR FATAL!  (Leído 2,055 veces)
big_ed

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Método PREPARE de PHP me arroja ERROR FATAL!
« en: 19 Agosto 2019, 20:25 pm »

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 17

Lo 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:

Código:
<?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
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #1 en: 19 Agosto 2019, 21:21 pm »

¿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:

Código
  1. if($PRE === false) throw new Exception($MARIA->error);


En línea

big_ed

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #2 en: 19 Agosto 2019, 21:52 pm »

¿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:

Código
  1. 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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #3 en: 19 Agosto 2019, 21:58 pm »

Citar
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...

Citar
¿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 Desconectado

Mensajes: 82


Ver Perfil
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #4 en: 19 Agosto 2019, 22:38 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #5 en: 19 Agosto 2019, 22:50 pm »

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 Desconectado

Mensajes: 82


Ver Perfil
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #6 en: 19 Agosto 2019, 23:02 pm »

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 Desconectado

Mensajes: 82


Ver Perfil
Re: Método PREPARE de PHP me arroja ERROR FATAL!
« Respuesta #7 en: 19 Agosto 2019, 23:53 pm »

¿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:

Código
  1. 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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error prepare statement
Java
sapito169 3 8,905 Último mensaje 24 Febrero 2009, 19:53 pm
por cornell
Exe desempacado de winlicense, pero arroja error, que puede ser?
Ingeniería Inversa
Fucko 4 4,735 Último mensaje 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 21,207 Último mensaje 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,676 Último mensaje 8 Noviembre 2013, 01:02 am
por #!drvy
VBScript Funcion SaveAs arroja error
Scripting
guillehampp 4 3,786 Último mensaje 11 Febrero 2015, 17:49 pm
por guillehampp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines