2015-10-16 2 views
-2

Je regardais les résultats d'une jointure mysql dans phpmyadmin, et je la comparais au php print_r dump, et j'ai remarqué que print_r semble utiliser uniquement la première (ligne) variable "id" à laquelle il vient, et ignore la seconde un. Y a-t-il une raison pour que print_r ne mette pas quelque chose comme un 'nom de table.' 'Id' 'au lieu de simplement supprimer la valeur de la seconde table "id"?PHP répète-t-il des variables avec le même nom dans phpMyAdmin, ou est-ce un défaut avec print_r?

PHPMYADMIN décharge de la tête:

  • id INST_ID zip id INST_ID compétence

échantillon de PHP décharge:

  • Array ([id] => 1 [INST_ID] => 1 [zip] => 23456 [skill] => miaou)
+2

Techniquement, si elle est un tableau, vous ne pouvez pas avoir quelque chose comme Array ([id] => 1, [id] => 2). – Severun

+0

Une clé ne peut apparaître qu'une seule fois dans un tableau. – Barmar

+0

Vous ne pouvez pas avoir de tableau ([id] => 1, [id] => 2) mais vous pouvez avoir quelque chose comme tableau ([id] [1] => 1, [id] [2] => 2) –

Répondre

2

print_r imprime juste le tableau tel qu'il est, et apparemment il a seulement 4 index avec les valeurs spécifiées.

Le problème est dans la requête elle-même. Les noms de table ou les alias de table ne sont pas retournés dans le nom du champ, vous obtenez donc deux champs nommés id. Comme un tableau ne peut pas avoir la même clé deux fois, l'un des deux est simplement ignoré.

Donc, pour le résoudre, modifiez la requête en spécifiant un alias pour le champ lui-même:

SELECT 
    t1.id as t1_id, -- Key will be t1_id 
    t2.id as t2_id, -- Key will be t2_id 
    .. other fields .. 
FROM 
    .. etcetera ... 
+0

Je demandais simplement pourquoi les deux cas d'utilisation de la même chose agissent si différemment. –

+1

Ah. Eh bien, pour un tableau, la clé est un index unique. Pour un résultat de requête qui n'est pas le cas. Vous avez juste une liste de champs, et chacun d'entre eux a un nom et une valeur. Deux champs peuvent donc avoir le même nom dans le résultat de la requête. Dès que PHP les traduit en tableau, les noms de champs dupliqués sont perdus. – GolezTrol