Foros del Web » Programando para Internet » PHP »

Duda en sintáxis mysqli_query

Estas en el tema de Duda en sintáxis mysqli_query en el foro de PHP en Foros del Web. Hola, buenas tardes, Tengo duda en un procedimiento, el cuál aún no me queda del todo claro. Les explico: Si tengo: Código PHP: $sql  =  ...
  #1 (permalink)  
Antiguo 09/04/2014, 13:03
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Duda en sintáxis mysqli_query

Hola, buenas tardes,

Tengo duda en un procedimiento, el cuál aún no me queda del todo claro. Les explico:

Si tengo:

Código PHP:
$sql mysqli_query($connect"Select * from tabla"MYSQLI_USE_RESULT);
$row mysqli_fetch_assoc($sql);

mysqli_free_result($sql); 
he notado que en ocasiones, no es necesario usar MYSQLI_USE_RESULT y por ende tampoco mysqli_free_result(); esto lo he notado cuando en mi código PHP tengo más de una consulta realizada, seguida una de la otra.

Entonces mi duda es, en que momento debo usar:

Código PHP:
$sql mysqli_query($connect"Select * from tabla"MYSQLI_USE_RESULT);
$row mysqli_fetch_assoc($sql);

mysqli_free_result($sql); 
y en que momentos así:

Código PHP:
$sql mysqli_query($connect"Select * from tabla");
$row mysqli_fetch_assoc($sql); 
o simplemente si estoy cometiendo un error en alguna de las dos y por ello alguna no llega a funcionar bien.

De antemano, agradezco por sus comentarios. Saludos!!
  #2 (permalink)  
Antiguo 09/04/2014, 13:28
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Duda en sintáxis mysqli_query

Eso lo puedes ver en el manual:

http://www.php.net/manual/en/mysqli.query.php
Código PHP:
Ver original
  1. mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

Cita:
resultmode

Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

If you use MYSQLI_USE_RESULT all subsequent calls will return error Commands out of sync unless you call mysqli_free_result()

With MYSQLI_ASYNC (available with mysqlnd), it is possible to perform query asynchronously. mysqli_poll() is then used to get results from such queries.
http://www.php.net/manual/en/mysqli.constants.php
Cita:
MYSQLI_STORE_RESULT For using buffered resultsets
MYSQLI_USE_RESULT For using unbuffered resultsets
Que disfrutes la lectura !
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 09/04/2014, 15:21
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Duda en sintáxis mysqli_query

Lo que busco es una respuesta más basada en la experiencia, no extraída literalmente del manual.

Por ejemplo:

Yo acostumbraba hacer esto:

if(isset($_POST[variable])){ ... }

y aquí en el foro me comentaron que es más correcto hacer:

if(isset($_POST['variable'])){ ... } -> el uso de las comillas

Por ello mi pregunta anterior, si hay la necesidad en algunos casos de usar MYSQLI_USE_RESULT o si es correcto omitirlo. La guía te dice:

Cita:
Ya sea la constante MYSQLI_USE_RESULT o MYSQLI_STORE_RESULT dependiendo del resultado deseado. Por defecto se usa la constante MYSQLI_STORE_RESULT.
¿Cómo interpreto yo "el resultado deseado"? Yo podría decir: quiero que sólo me de el resultado de una tabla de alumnos y sólo quiero sus nombres y calificaciones.... para mi ese es mi resultado deseado. Pero eso no me dice nada de si uso MYSQLI_USE_RESULT o MYSQLI_STORE_RESULT o ninguno de los dos.

Probablemente en tu caso hhs, hayas captado la idea principal de esta función a la primera, en mi caso no fue así, aún me quedan dudas y creo que es correcto preguntarlas a quedarme con ellas.

Lo de la página que me enviaste, pues claro que ya la revise, he aprendido mucho PHP de ahí y de muchos tutoriales y libros, pero siempre habrá algo que se nos escape y haya la necesidad de preguntar.

Saludos!
  #4 (permalink)  
Antiguo 10/04/2014, 17:52
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Duda en sintáxis mysqli_query

Cita:
Ya sea la constante MYSQLI_USE_RESULT o MYSQLI_STORE_RESULT dependiendo del resultado deseado. Por defecto se usa la constante MYSQLI_STORE_RESULT.
el resultado deseado es como quieres que la api recupere la consulta: Si usas MYSQLI_STORE_RESULT vas a traer todo el resultado de la consulta y lo vas a guardar en memoria de tal forma que cuando usas fech_* lo que recives es un result set en memoria y cualquier cambio que hagas sobre el, solo afecta de forma aislada los datos en los registros .
Si tu usas MYSQLI_USE_RESULT cuando utilices fech_* vas a solicitar tu resultado registro por registro directamente de la base de datos.
Cita:
Por ello mi pregunta anterior, si hay la necesidad en algunos casos de usar MYSQLI_USE_RESULT o si es correcto omitirlo
La mayor parte del tiempo usas el default ( MYSQLI_STORE_RESULT), pero si tu consulta va ser particularmente costosa en una tabla con gran cantidad de registros vas a preferir usar MYSQL_USE_RESULT, pero debes de tomar en cuenta que con esa opción las tablas relacionadas a los registros que estas recuperando no aceptaran otras operaciones.
Espero eso te aclare un poco mas el uso de esas constantes.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: mysql, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:11.