Foros del Web » Programando para Internet » PHP »

Problema con mysql_query y operador OR

Estas en el tema de Problema con mysql_query y operador OR en el foro de PHP en Foros del Web. Buenas noches gente, estoy iniciándome en PHP y he tratado de hacer una clase para manejar las funciones mysql, pero me está dando problemas De ...
  #1 (permalink)  
Antiguo 11/05/2011, 13:32
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Problema con mysql_query y operador OR

Buenas noches gente, estoy iniciándome en PHP y he tratado de hacer una clase para manejar las funciones mysql, pero me está dando problemas De momento lo tengo así:
Código PHP:
Ver original
  1. class BD {
  2.         function __construct($server, $user, $pass){
  3.             $this -> conexion = mysql_connect($server, $user, $pass)
  4.                                  or die('No ha sido posible conectarse a la base de datos. Error: ' . mysql_error());
  5.         }
  6.         function selec($db = 'BD'){
  7.             return mysql_select_db($db, $this -> conexion) or die('No ha sido posible seleccionar la base de datos. Error: ' . mysql_error());
  8.         }
  9.         function buscar($query, $tabla = 'tabla', $opc = ''){
  10.             return mysql_query('SELECT ' . trim($query or '*')
  11.                              . ' FROM ' . trim($tabla)
  12.                              . ($opc),
  13.                             $this -> conexion) or die('No ha sido posible realizar la búsqueda en la base de datos. Error: ' . mysql_error());
  14.         }
  15.         function insertar($tabla, $campos = 'id', $valores = 'NULL'){
  16.             return mysql_query('INSERT INTO ' . trim($tabla or 'tabla')
  17.                              . ' (' . trim($campos) . ')'
  18.                              . ' VALUES (' . trim($valores) . ')',
  19.                             $this -> conexion)
  20.              or die('No ha sido posible insertar el registro en la base de datos. Error: ' . mysql_error());
  21.         }
  22.         function actualizar($tabla, $act, $opc = ''){
  23.             return mysql_query('UPDATE '
  24.                             . trim($tabla or 'tabla')
  25.                             . ' SET ' . trim($act)
  26.                             . $opc,
  27.                             $this -> conexion)
  28.              or die('No ha sido posible actualizar la base de datos. Error: ' . mysql_error());
  29.         }
  30.         function borrar($tabla, $espec = '1'){
  31.             return mysql_query('DELETE FROM '
  32.                             . trim($tabla or 'tabla')
  33.                             . ' WHERE '
  34.                             . trim($espec),
  35.                             $this -> conexion)
  36.              or die('No ha sido posible borrar el registro en la base de datos. Error: ' . mysql_error());
  37.         }
  38.         function error(){
  39.             return mysql_error();
  40.         }
  41.         function cerrar(){
  42.             return mysql_close($this -> conexion);
  43.         }
  44.     }
Y si por ejemplo hago algo como:
Código PHP:
Ver original
  1. $DB = new BD('localhost', 'root', 'password');
  2.     $DB -> selec('proyecto');
  3.     $cursos = $DB -> buscar('*', 'cursos', ' ORDER BY posicion ASC');
  4.     while($curso = mysql_fetch_array($cursos)){
  5.         echo $curso['nombre'] . '<br />';
  6.     }
  7.     $DB -> cerrar();
Me dice que mysql_fetch_array espera un resource pero recibió un boolean. Me imagino que el problema tendrá que ver con el OR, pero por ejemplo en la función constructora o en selec también está el OR y no me devuelve un boolean. ¿Cuál es entonces el problema?
Saludos y gracias de antemano :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #2 (permalink)  
Antiguo 11/05/2011, 14:18
Avatar de _-ZeuS-_  
Fecha de Ingreso: junio-2007
Ubicación: Quito, Ecuador! ;)
Mensajes: 100
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: Problema con mysql_query y operador OR

Me parce que tu error está aquí:

trim($query or '*')

dejale como $query='*' al inicio de la sessión y abajo sólo mandas el

trim($query).

nada más.
  #3 (permalink)  
Antiguo 12/05/2011, 11:35
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con mysql_query y operador OR

Bueno lo primero muchas gracias por contestar, pero creo que no es ese el problema. Modifiqué la función así:
Código PHP:
Ver original
  1. function buscar($query, $tabla = 'tabla', $opc = ''){
  2.             return mysql_query('SELECT ' . trim($query)
  3.                              . ' FROM ' . trim($tabla)
  4.                              . ($opc),
  5.                             $this -> conexion) or die('No ha sido posible realizar la búsqueda en la base de datos. Error: ' . mysql_error());
  6.         }
Y sigue sin querer ir. Lo que tú dijiste aún tenía sentido, pero ahora sí que no veo dónde puede estar fallando
Saludos y gracias :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 13/05/2011, 07:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con mysql_query y operador OR

Que tal _cronos2,

Primero debugea la query, y segundo deberias estar utilizando PDO, en vez de el set de funciones mysql_*

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 13/05/2011 a las 07:57 Razón: typo
  #5 (permalink)  
Antiguo 13/05/2011, 18:04
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Problema con mysql_query y operador OR

debugea we


Código PHP:
Ver original
  1. function buscar($query, $tabla = 'tabla', $opc = ''){
  2.    
  3.             $cueritomalevolencio= 'SELECT ' . trim($query or '*'). ' FROM ' . trim($tabla). ($opc);
  4.             echo $cueritomalevolencio;
  5.             return mysql_query($cueritomalevolencio,$this -> conexion) or die('No ha sido posible realizar la búsqueda en la base de datos. Error: ' . mysql_error());
  6.         }


si veo que usas medio raro el or dentro del trim

http://mx2.php.net/trim
http://mx2.php.net/manual/es/languag...rs.logical.php
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #6 (permalink)  
Antiguo 14/05/2011, 06:52
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema con mysql_query y operador OR

Cita:
Iniciado por masterpuppet Ver Mensaje
Primero debugea la query, y segundo deberias estar utilizando PDO, en vez de el set de funciones mysql_*

Saludos.
Hola @masterpuppet Si yo por ejemplo tengo
Código PHP:
Ver original
  1. $cursos = $DB -> buscar('*', 'cursos', ' ORDER BY posicion ASC');
Y le hago un echo a la query, me devuelve:
Cita:
SELECT * FROM cursos ORDER BY posicion ASC
¿Y por qué es mejor usar PDO que mysql? (Duda de novato, me imagino )
Cita:
Iniciado por mogurbon Ver Mensaje
debugea we


Código PHP:
Ver original
  1. function buscar($query, $tabla = 'tabla', $opc = ''){
  2.    
  3.             $cueritomalevolencio= 'SELECT ' . trim($query or '*'). ' FROM ' . trim($tabla). ($opc);
  4.             echo $cueritomalevolencio;
  5.             return mysql_query($cueritomalevolencio,$this -> conexion) or die('No ha sido posible realizar la búsqueda en la base de datos. Error: ' . mysql_error());
  6.         }


si veo que usas medio raro el or dentro del trim

http://mx2.php.net/trim
http://mx2.php.net/manual/es/languag...rs.logical.php
@mogurbon, ya probé a debugear y no veo el fallo Y lo del or, es porque yo vengo de JS, y pensée que algo como esto:
Código Javascript:
Ver original
  1. var str = '' || 'Hola, ¿qué tal?';
Se podría exportar a PHP así:
Código PHP:
Ver original
  1. $str = '' OR 'Hola, ¿qué tal?';
Saludos y gracias a los dos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: operador
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

SíEste tema le ha gustado a 1 personas




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