elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  [Pregunta]: ¿Como muestro el siguiente resultado?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Como muestro el siguiente resultado?  (Leído 3,455 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: ¿Como muestro el siguiente resultado?
« en: 19 Octubre 2019, 06:00 am »

Bueno quería saber como puedo acceder a el siguiente resultado que me arroja una consulta SQL

Código
  1. $query = $con->prepare('SELECT n.id_notification, u1.name, u2.name FROM notifications n INNER JOIN users u1 ON n.id_emitter = u1.id_user INNER JOIN users u2 ON n.id_user = u2.id_user');
  2.  

Hice un var_dump a la variable que contiene los resultados que devuelve la consulta.

Código
  1. array(1) { [0]=> array(5) { ["id_notification"]=> string(1) "1" [0]=> string(1) "1" ["name"]=> string(6) "Miguel" [1]=> string(5) "Ramon" [2]=> string(6) "Miguel" } }
  2. 1
  3.  

Para intentar a acceder a los dos nombres que se guardan que según entiendo sería así:

Código
  1. $results[0]['name'] // Va a devolver 'Miguel'
  2. $results[0][1]['name'] // Esperaba que devuelva Ramon pero devuelve 'R'
  3. $results[0][2]['name'] // Esperaba que devuelva Miguel pero devuelve 'M'
  4.  

La idea era hacerlo sin tener que usar "AS"


« Última modificación: 19 Octubre 2019, 06:02 am por MiguelCanellas » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Como muestro el siguiente resultado?
« Respuesta #1 en: 19 Octubre 2019, 07:06 am »

recomiendo el var_dump verlo como codigo fuente o usar un echo "<pre>"; antes para que se imprima como texto preformateado, ya que lo estás leyendo mal

el var_dump es
Código:
array(1) { 
  [0]=> array(5) {
    ["id_notification"]=> string(1) "1"
    [0]=> string(1) "1"
    ["name"]=> string(6) "Miguel"
    [1]=> string(5) "Ramon"
    [2]=> string(6) "Miguel"
  }
}

ojo, para evitar esos problemas la mejor practica es usar siempre AS, no pierdes nada

e ignoro como no te devuelve error con $results[0][1]['name']


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: ¿Como muestro el siguiente resultado?
« Respuesta #2 en: 19 Octubre 2019, 16:59 pm »

Yo creo que el problema aquí es más con PHP que con la base de datos. Tienes dos campos que se llaman "name" y los drivers que hay de MySQL en PHP tipicamente sobreescriben el valor en la columna repetida, no expanden la columna a un arreglo que contenga todos los valores de la columna con el mismo nombre. Hasta donde yo se, no hay forma de cambiar este comportamiento. Por eso necesitas usar un ALIAS con "AS" para evitar la colisión de las columnas.

O simplemente usas los indices en lugar de los nombres de las columnas:

Código
  1. $results[0][1]; //Ramon
  2. $results[0][2]; //Miguel'

e ignoro como no te devuelve error con $results[0][1]['name']

Devuelve un warning, pero no es un error fatal.

Citar
Advertencia
Escribir en un índice fuera del rango rellenará el string con espacios. Los tipos que no sean integer son convertidos a integer. Los índices ilegales emiten un error de nivel E_NOTICE. Los índices negativos emiten un error de nivel E_NOTICE en la escritura, aunque se lea un string vacío. Sólo se emplea el primer carácter de un string asignado. La asignación de un string vacío asigna un byte NULL.

https://www.php.net/manual/es/language.types.string.php#language.types.string.substr

Edit: La documentación en español discrepa con la de ingles, en la que dice que es E_WARNING. Probablemente un cambio en alguna version.
En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Como muestro el siguiente resultado?
« Respuesta #3 en: 19 Octubre 2019, 18:24 pm »

Muchas gracias a los dos, ya todo funciona correctamente!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines