Un ulteriore punto da tenere presente è che fetch_assoc()
potrebbe non restituire tutte le colonne previste. Se 2 colonne di output avranno lo stesso nome, solo l'ultima istanza di tale colonna verrà recuperata da fetch_assoc()
. Ad esempio, la seguente query:
SELECT * FROM orders LEFT JOIN line_items ON orders.id = line_items.order_id
Assumendo entrambe le tabelle hanno una colonna chiamata id
, l'array associativo risultante avrebbe una chiave denominata id
il cui valore è impostato su line_items.id
e non sarebbe in grado di recuperare orders.id
dal risultato!
È possibile aggirare questo duplicato problema nomi di colonna e continuare a utilizzare fetch_assoc()
da aliasing manualmente i SELECT
colonne, dando ogni colonna un alias univoco:
SELECT
o.id AS order_id, #unique alias
i.id AS line_item_id, #unique alias
o.date,
i.qty,
i.price
FROM orders o
LEFT JOIN line_items i ON i.order_id = o.id
Oppure si può passare ad usare fetch_array()
, che vi permetterà di accedere sia id
per indice invece che per chiave
Preferisco il percorso ASSOC, semplicemente perché è più facile leggere il mio codice ...: P Questa non è una domanda, ma è una tua opinione, comunque. – user17753
'mysql_fetch_assoc()' è più veloce (un po ') da solo. Ma vorrei anche ridurre l'ingombro del mio programma, quindi eviterei mysql_fetch_array() con 'MYSQL_BOTH' o opzione predefinita. – Imdad
L'associazione è preferita durante l'aggiornamento di SQL deprecato che è il nome della colonna centrica. Inoltre, rende più semplice l'analisi dell'impatto con gli strumenti di tipo grep. – mckenzm