[PHP-MySQLi] Dudas ¿¡!?
#1
Pregunta 
Hola a todos,
bueno tengo unas dudas respecto a si lo que hice es la "manera correcta" de hacerlo, no?

Esto sería un ejemplo de como lo tengo. Sí, funciona, al menos lo que necesito lo hace.

Código PHP:
<?php
    $iMySQLi 
= new mysqli('127.0.0.1''root''pass''table');

    if(
$iMySQLi->connect_errno) {
        echo 
"Falló la conexión a MYSQL: (" $iMySQLi->connect_errno ")" $iMySQLi->connect_error;
    }
    
    if(
$sqlQuery $iMySQLi->prepare("SELECT dato1, dato2, dato3, FROM table ORDER BY dato2 DESC LIMIT 5;")) {
        if(
$sqlQuery->execute()) {
            if(
$sqlQuery->bind_result($Dato1$Dato2$Dato3)) {
                while(
$sqlQuery->fetch()) {
                    
// code 
                    // code
                
}
            }
            
            
$sqlQuery->close();
        }
    }
    
    
$iMySQLi->close();
?>

Mi duda sería saber si la forma en que chequeo si se ejecuta la query, y todo eso lo hago bien o hay un método más seguro o "correcto" en hacerlo, no se si me llego a explicar. Insecure

Gracias por leer. Nothingdohere
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#2
las consultas preparadas se crearon para mejorar el rendimiento cuando se manejan cosas grosas donde se repiten las mismas consultas cambiando algunas variables, es alp2 para cosas pequeñas, aunque muchos lo usan porque no tienen confianza en recordar escapar las variables importantes y tienen miedo a los kacker... (mi teoría xd)

cuando comprobas la conexion mete un exit/return
no es necesario usar close() para cerrar la conexion
Responder
#3
Que tiene que no sea necesario cerrar las consultas y la conexión? Insecure
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#4
(07/10/2016, 09:20 PM)Destro escribió: las consultas preparadas se crearon para mejorar el rendimiento cuando se manejan cosas grosas donde se repiten las mismas consultas cambiando algunas variables, es alp2 para cosas pequeñas, aunque muchos lo usan porque no tienen confianza en recordar escapar las variables importantes y tienen miedo a los kacker... (mi teoría xd)

cuando comprobas la conexion mete un exit/return
no es necesario usar close() para cerrar la conexion
No es al p2 para cosas pequeñas, justamente porque previene la SQLi... nunca te tenés que preocupar por escapar los strings.

Como es eso de que no es necesario hacer un close???
[Imagen: paypalqr.png]
Responder
#5
por eso dije que muchos lo usan para no preocuparse por escapar los strings...

la conexion se cierra al finalizar el script, en muy raros casos es necesario finalizarlo antes
Responder
#6
Bueno si, la conexión como siempre lo cierro al final. Pero las consultas, eso no es necesario cerrarlas? Pero si se puede hacer, por que no lo haría? xD Roflmao
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#7
(08/10/2016, 12:31 AM)Destro escribió: por eso dije que muchos lo usan para no preocuparse por escapar los strings...

la conexion se cierra al finalizar el script, en muy raros casos es necesario finalizarlo antes
Estás segurooo???? Hasta donde tenía entendido deja la conexión abierta en el mysql como cuando usas mysql_*... Voy a investigar.

PD: Igual es una mala práctica no cerrarlas... después hacés algo en C/C++ y el consumo de memoria de tu producto final va a ser ++++++++++ por acostumbrarte a no cerrar handlers o liberar memoria.
[Imagen: paypalqr.png]
Responder
#8
Como ya dijeron, no es necesario cerrar la conexion, pero como buena practica deberias hacerlo. Ademas, si ya no lo necesitas, cierralo - no tienes por que esperar a termine el script.

Tampoco es necesario que tengas tantas condiciones para cada cosa:
Código PHP:
if($sqlQuery $iMySQLi->prepare("SELECT dato1, dato2, dato3, FROM table ORDER BY dato2 DESC LIMIT 5;")) {
        if(
$sqlQuery->execute()) {
            if(
$sqlQuery->bind_result($Dato1$Dato2$Dato3)) { 

Con el primer if seria suficiente.

Otra cosa:
Código PHP:
echo "Falló la conexión a MYSQL: (" $iMySQLi->connect_errno ")" $iMySQLi->connect_error
El usuario nunca deberia de ver los errores, solo el desarrollador a traves de archivos logs.
Hi [R]ak CrabCrab
Responder
#9
(08/10/2016, 02:15 PM)Milashkasiya escribió: Como ya dijeron, no es necesario cerrar la conexion, pero como buena practica deberias hacerlo. Ademas, si ya no lo necesitas, cierralo - no tienes por que esperar a termine el script.

Tampoco es necesario que tengas tantas condiciones para cada cosa:
Código PHP:
if($sqlQuery $iMySQLi->prepare("SELECT dato1, dato2, dato3, FROM table ORDER BY dato2 DESC LIMIT 5;")) {
        if(
$sqlQuery->execute()) {
            if(
$sqlQuery->bind_result($Dato1$Dato2$Dato3)) { 

Con el primer if seria suficiente.

Otra cosa:
Código PHP:
echo "Falló la conexión a MYSQL: (" $iMySQLi->connect_errno ")" $iMySQLi->connect_error
El usuario nunca deberia de ver los errores, solo el desarrollador a traves de archivos logs.

Ohh perfecto, y como debería mejorar esto? :

Código PHP:
if($sqlQuery $iMySQLi->prepare("SELECT dato1, dato2, dato3, FROM table ORDER BY dato2 DESC LIMIT 5;")) {
        if(
$sqlQuery->execute()) {
            if(
$sqlQuery->bind_result($Dato1$Dato2$Dato3)) { 

Gracias por la ayuda.

EDIT:

Se va a ejecutar siempre y cuando "prepare" sea true? Osea, no sería necesario chequear si se ejecuta, por que lo haría? Insecure

Código PHP:
if($sqlQuery $iMySQLi->prepare("SELECT dato1, dato2, dato3, FROM table ORDER BY dato2 DESC LIMIT 5;")) {
        
$sqlQuery->execute();

        
$sqlQuery->bind_result($Dato1$Dato2$Dato3); 
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)