Foros del Web » Programando para Internet » PHP »

mysql devuelve un true duda

Estas en el tema de mysql devuelve un true duda en el foro de PHP en Foros del Web. Hola miren tengo una consulta en un parte de un codigo, lo pongo en pseudocodigo... (o de una manera que se entienda) @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 01/07/2014, 07:27
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 7 años, 3 meses
Puntos: 3
mysql devuelve un true duda

Hola miren tengo una consulta en un parte de un codigo,

lo pongo en pseudocodigo... (o de una manera que se entienda)

Código PHP:
Ver original
  1. if(llamadafuncion($valores)){
  2.  
  3. echo "consulta realizada con exito"
  4.  
  5. }


despues por otro lado tenemos la funcion esta...

Código PHP:
Ver original
  1. function llamadafuncion($data){
  2.  
  3. //  insert blablablala  REALIZA CONSULTA DE INSERCION SQL
  4.  
  5. return mysql_id  (el ultimo ID ingresado)
  6.  
  7. }


esto ... esta bien hecho??
osea la llamada no siempre devolvera valores en el caso de la consulta no se realice con exito, (la conexion a la base de datos no se logro por ejemplo)
devolvera false, o nada...

PERO EN EL CASO DE QUE INSERTE un valor... devolvera un numero...un numero de un ID (cualquier numero 5,78,6,24,77,3)
entonces se cumplira esa condicion ... del if?

if(llamadafuncion($valores)){
}


o solo ENTRARA A LA CONDICION SI DEVUELVE, UN BOLEEANO COMO UN "TRUE" O "FALSE"

---
YO CREO QUE SI LE ENTRA UN NUMERO CUALQUIERA, LE ENTRA IGUAL...
  #2 (permalink)  
Antiguo 01/07/2014, 07:31
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 6 años, 10 meses
Puntos: 379
Respuesta: mysql devuelve un true duda

Mejor coloca tu código original y no faltara quien lo revise para orientarte
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 01/07/2014, 07:35
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 7 años, 3 meses
Puntos: 3
Respuesta: mysql devuelve un true duda

Código PHP:
Ver original
  1. if(lalala()){
  2. echo "correcto";
  3. }else{
  4. echo "nana";
  5. }
  6.  
  7.  
  8.  
  9. function lalala(){
  10.  
  11. //  return true;
  12. // return false;
  13.  
  14. return 3;
  15.  
  16. }

lo hice en codeigniter, pero tecnicamente esto es lo que decia, devolviendo un entero LE ENTRA IGUAL,
  #4 (permalink)  
Antiguo 01/07/2014, 07:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 12 años, 6 meses
Puntos: 2656
Respuesta: mysql devuelve un true duda

Manual de referencia...

Primero: La función PHP no debe contener una sentencia SQL porque MySQL no entiende PHP. En todo caso lo que tienes es una llamada a una librería (MYSQL o MYSQLI), la cual puede ser mysql_query() o mysqli_query(), según el caso.
En ambos casos, retorna un TRUE si la ejecución de la sentencia que la funcion de la librería envia a la base se ejecuta sin errores. Por consecuencia lo primero que debes validar es que devolvión TRUE o FALSE.
Pero además, existe una función denominada mysql_affected_rows() en una librería y mysqli_affected_rows() en la otra, que te devuelve la cantidad de registros insertados, actualizados o borrados (según el caso) de la setencia ejecutada por la llamada anterior.
Eso es lo que debes usar cuando vas a ejecutar una sentencia SQL del tipo INSERT, UPDATE o DELETE.

El manual de referencia tiene ejemplos que deberías seguir:

Librería MYSQL
Código PHP:
Ver original
  1. <?php
  2. $enlace = mysql_connect('localhost', 'usuario_mysql', 'contraseña_mysql');
  3. if (!$enlace) {
  4.     die('No se pudo conectar: ' . mysql_error());
  5. }
  6.  
  7. /* Esto debería devolver el número correcto de registros borrados */
  8. mysql_query('DELETE FROM mitabla WHERE id < 10');
  9. printf("Registros borrados: %d\n", mysql_affected_rows());
  10.  
  11. /* con una clausula WHERE que nunca es verdad, debería devolver 0 */
  12. mysql_query('DELETE FROM mitabla WHERE 0');
  13. printf("Registros borrados: %d\n", mysql_affected_rows());
  14. ?>

Librería MYSQLI:
Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
  3.  
  4. /* Comprueba la conexión */
  5.     printf("Connect failed: %s\n", mysqli_connect_error());
  6.     exit();
  7. }
  8.  
  9. /* Actualiza filas */
  10. $mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50");
  11. printf("Affected rows (UPDATE): %d\n", $mysqli->affected_rows);
  12.  
  13. /* Elimina filas */
  14. $mysqli->query("DELETE FROM Language WHERE Percentage < 50");
  15. printf("Affected rows (DELETE): %d\n", $mysqli->affected_rows);
  16. $result->close();
  17.  
  18. /* Cierra la conexión */
  19. $mysqli->close();
  20. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 01/07/2014, 07:42
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 5 años, 11 meses
Puntos: 0
Respuesta: mysql devuelve un true duda

Si lo entendi bien, lo que tienes es una funcion que realiza un insert y además devuelve el ID de la ultima insercción realizada no?. Si la consulta está bien hecha... debería funcionar la condición del if... aunque yo preferiria guardar el valor de la función en otra variable y pasar dicha variable por el condicional. A la variable se le podría aplicar un is_nan() para que devuelva true o false dependiendo de si el contenido es un número o no. Aunque claro, eso es cuestión de gustos. De todas formas, a simple vist para mí, debería funcionar el script.

en tal caso quedaria algo asi..
Código PHP:
Ver original
  1. $var1 = llamadafuncion($valor);
  2. if(is_nan($var1)){
  3. echo "Consulta realizada con exito";
  4. }

Aun soy algo novata con php, solo llevo algo más de medio año estudiendo a plena potencia, por lo que la idea no se si es 100% correcta, pero yo he hecho algo similar y me ha funcionado.
  #6 (permalink)  
Antiguo 01/07/2014, 09:04
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 7 años, 3 meses
Puntos: 3
Respuesta: mysql devuelve un true duda

lo que yo digo... que en un IF ()

se toma valido tanto asi como un TRUE, o cualquier respuesta que de la funciona llamada en este caso,

como decia, la funcion no devuelve TRUE, devuelve el ultimo registro ingresado

pero en mis pruebas que hice, al devolver un valor entero, entraba igual en el "IF",

(YA SE QUE PARA HACER UN INSERT HAY QUE HACER MYSQL_CONNECT O LO QUE SEA , ERA UNA EXPLICACION BREVE)
  #7 (permalink)  
Antiguo 01/07/2014, 09:22
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 6 años, 10 meses
Puntos: 379
Respuesta: mysql devuelve un true duda

Cita:
pero en mis pruebas que hice, al devolver un valor entero, entraba igual en el "IF",
Ese es el comportamiento esperado:
Cita:
Warning
-1 is considered TRUE, like any other non-zero (whether negative or positive) number!
Referencia: http://www.php.net/manual/en/languag...oolean.casting
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 02/07/2014, 09:55
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 7 años, 3 meses
Puntos: 3
Respuesta: mysql devuelve un true duda

Cita:
Iniciado por hhs Ver Mensaje
Ese es el comportamiento esperado:


Referencia: http://www.php.net/manual/en/languag...oolean.casting

osea.. se que

1 valor integer es igual a TRUE -boolean-
0 valor integer es false FALSE

estos 2 valores son validos para un IF...

pero yo recibiendo 2,45,87,4,8,76
le entra igual al if
osea los toma como que "ALGO" recibio y lo toma como valido... no deberia ser asi.. creo...
tendria que recibir solo 0 y 1.
  #9 (permalink)  
Antiguo 02/07/2014, 10:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 12 años, 6 meses
Puntos: 2656
Respuesta: mysql devuelve un true duda

Deberías mirar el link del manual que te están pasando...
Entendamos esto:
Cita:
-1 es conisderado TRUE, como cualquier otro valor numérico difernete de cero (sea negativo o positivo).
En PHP, a diferencia de otroso lenguajes, sólo cero (0) es FALSE Adicionalmente sifnifica que si lo que recibes es una cadena de texto, y esta no contienen un cero ('0'), entonces también será un FALSE, aunque esta cadena tenga un valor NULL.
Tienes que ponerte en el contexto del PHP y olvidarte de lo que encuentras en otros lenguajes. Sonas reglas de PHP las que mandan.

Manual de referencia:
Cita:
Cuando se realizan conversiones a boolean, los siguientes valores son considerados FALSE:

el boolean FALSE mismo
el integer 0 (cero)
el float 0.0 (cero)
el valor string vacío, y el string "0"
un array con cero elementos
un object con cero variables miembro (sólo en PHP 4)
el tipo especial NULL (incluyendo variables no definidas)
objetos SimpleXML creados desde etiquetas vacías
Nota: Cuando asignas una cadena vacía, y lo validas en un IF, evalua si la variable no es NULL, por lo que el resultado en un IF() es TRUE:

Código PHP:
Ver original
  1. $var = '';
  2. if($var)
  3. {...}
Esto puede generar algunas confusiones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/07/2014 a las 10:40

Etiquetas: devuelve, mysql, sql, true
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 19:28.