Foros del Web » Programando para Internet » PHP »

Problema con consulta MySQL y JSON

Estas en el tema de Problema con consulta MySQL y JSON en el foro de PHP en Foros del Web. Hola gente, son nueva por acá, estuve buscando solución a mi problema y no encuentro. Les cuento que necesito imprimir el resultado de mi consulta ...
  #1 (permalink)  
Antiguo 12/09/2015, 18:59
 
Fecha de Ingreso: septiembre-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Pregunta Problema con consulta MySQL y JSON

Hola gente, son nueva por acá, estuve buscando solución a mi problema y no encuentro. Les cuento que necesito imprimir el resultado de mi consulta en JSON.
La tabla MENSAJES de mi servidor tiene los campos 'msj_id, msj_asunto, msj_fecha, msj_hora, msj_detalle, msj_emisor'

este codigo si funciona:
Código PHP:
$resultado $mysqli->query("SELECT MSJ_Asunto, MSJ_Fecha FROM MENSAJES WHERE (MSJ_ID=".$ID.")");

// Crear un array de registros
  
$arrusers = array();
  if(
mysqli_num_rows($resultado)) {
    while(
$user mysqli_fetch_assoc($resultado)) {
      
$arrusers[] = $user;   // (*1)
    
}
  }
  
// salida en el formato JSON
  
header('Content-type: application/json');
  echo 
json_encode($arrusers);  // (*1) 
pero si la consulta la cambio por "SELECT * FROM MENSAJES WHERE (MSJ_ID=".$ID.")" o "SELECT MSJ_Emisor FROM MENSAJES WHERE (MSJ_ID=".$ID.")" o cualquier otro ya no anda.

cabe aclarar que todos los campos son char, y msj_detalle es char(280).

por que puede estar pasándome esto?
  #2 (permalink)  
Antiguo 12/09/2015, 19:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con consulta MySQL y JSON

Si el campo MSJ_ID es tipo varchar, entonces el valor por el que vas a buscar debe estar entre comillas y, por cierto, no necesitas concatenar para incluir una variable cuando delimitas la cadena con comillas dobles y tampoco necesitas los paréntesis en el WHERE porque solo estás comparando un campo:

Código PHP:
Ver original
  1. // Tu consulta actual:
  2. $resultado = $mysqli->query("SELECT MSJ_Asunto, MSJ_Fecha FROM MENSAJES WHERE MSJ_ID='$ID'");
  3.  
  4. // Seleccionando todos los campos:
  5. $resultado = $mysqli->query("SELECT * FROM MENSAJES WHERE MSJ_ID='$ID'");
  6.  
  7. // Seleccionando solo el emisor:
  8. $resultado = $mysqli->query("SELECT MSJ_emisor FROM MENSAJES WHERE MSJ_ID='$ID'");

Si después de corregir las consultas todavía no funciona, entonces el error podría ser que la variable $ID no esté definida o no tenga un valor adecuado.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 12/09/2015, 20:55
 
Fecha de Ingreso: septiembre-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Problema con consulta MySQL y JSON

NO, id es el único numérico. Como en la consulta que si anda esta sin comillas pensé que se entendería, perdón me expresé mal.
Y como digo, el codigo del principio si devuelve la respuesta esperada, lo que significa que la variable $ID si esta definida.

El problema es que si yo cambio "MSJ_Asunto, MSJ_Fecha" de la consulta por, por ejemplo, "MSJ_Detalle", o "MSJ_Emisor" o "*" deja de funcionar.
Cómo puede ser que exactamente el mismo codigo pero cambiando el campo que quiero que devuelva no funcione???
  #4 (permalink)  
Antiguo 12/09/2015, 23:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con consulta MySQL y JSON

Prueba la consulta para ver si hay un error:

Código PHP:
Ver original
  1. $consulta = "SELECT * FROM MENSAJES WHERE MSJ_ID = $ID";
  2.  
  3. // Esto es solo para que lo copies y pruebes en PhpMyAdmin
  4. echo $consulta;
  5.  
  6. // También sería bueno saber si obtienes un mensaje de error:
  7. $resultado = $mysqli->query($consulta) or die($mysqli->error);
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 14/09/2015, 10:04
 
Fecha de Ingreso: septiembre-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Problema con consulta MySQL y JSON

Hola Triby recién hoy me puedo volver a poner con esto.
Gracias por tu respuesta, pero como dije la consulta esta bien hecha y la variable bien definida. ya había probado mostrar la consulta y se imprime bien:

SELECT * FROM MENSAJES WHERE MSJ_ID =160

160 existe.

sigo sin entender porque no me muestra el json.
es exactamente el mismo codigo que use con toooodas las otras conultas y todas funcionan y esta no. me esta volviendo loca.

vuelvo a poner el codigo por las dudas:

Código PHP:
...

$ID $_GET['id'];

$TipoC $_GET['TC'];


  IF (
$TipoC=='msj'){
   
$consulta "SELECT * FROM MENSAJES WHERE (MSJ_ID =".$ID.")";
   
// Esto es solo para que lo copies y pruebes en PhpMyAdmin
echo $consulta;
 
// También sería bueno saber si obtienes un mensaje de error:
$resultado $mysqli->query($consulta) or die($mysqli->error);

// Crear un array de registros
  
$arrusers = array();
  if(
mysqli_num_rows($resultado)) {
    while(
$user mysqli_fetch_assoc($resultado)) {
      
$arrusers[] = $user;   // (*1)
    
}
  }
  
// salida en el formato JSON
  
header('Content-type: application/json');
  echo 
json_encode($arrusers);  // (*1)


mando los parametros por get asi
www... ... ... blabla.php?TC=msj&id=160

ves algun otro error?
  #6 (permalink)  
Antiguo 14/09/2015, 13:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con consulta MySQL y JSON

Podría ser que tus datos están en codificación diferente de UTF-8, entonces, al incluir campos varchar con caracteres especificos de otra codificación la función devuelve falso.

Código PHP:
Ver original
  1. $json = json_encode($arrusers);
  2. if($json ===false) {
  3.     die('Error al convertir array a JSON');
  4. }
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 14/09/2015, 15:51
 
Fecha de Ingreso: septiembre-2015
Mensajes: 4
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Problema con consulta MySQL y JSON

si, me devuelve el error asi que es como vos decis, mil gracias!
aunque no se como arreglar eso. que deberia hacer? guardarlos diferentes en la base de datos? convertirlos con php? ahora estoy mas perdida...
  #8 (permalink)  
Antiguo 14/09/2015, 18:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con consulta MySQL y JSON

Buscando un poco encontré esto: http://nazcalabs.com/blog/convert-ph...8-recursively/
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: json, mysql
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 01:22.