Kiat pro:Tidak pernah gunakan SELECT *
dalam perangkat lunak kecuali Anda tahu persis mengapa Anda melakukannya. Dalam kasus Anda, ini berbahaya.
Saya berasumsi permintaan Anda benar-benar bertentangan dengan user
dan trade
tabel yang Anda sebutkan dalam pertanyaan Anda.
Pertama, susun ulang kueri Anda menggunakan SQL abad ke-21, sebagai berikut:
SELECT *
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
WHERE s.facebook_id = $fbid
Kedua, gunakan ini untuk mengambil nama pengguna Anda dan id item yang diperdagangkan.
SELECT s.user_name AS sender,
r.user_name AS receiver,
t.trade_id AS item_id
FROM trade AS t
JOIN user AS s ON s.user_id = t.user_id_sender
JOIN user AS r ON r.user_id = t.user_id_receiver
WHERE s.facebook_id = $fbid
Lihat bagaimana kami JOIN
user
tabel dua kali, dengan dua alias berbeda s
(untuk pengirim) dan r
(untuk penerima)? Itulah trik untuk mengambil kedua nama dari ID.
Lihat bagaimana kami menggunakan alias sender
dan receiver
untuk membedakan kedua user_name
kolom di kumpulan hasil?
Sekarang, ketika Anda menggunakan php fetch_array
fungsi, Anda akan berakhir dengan elemen-elemen ini dalam array.
$history['sender']
$history['receiver']
$history['item_id']
String indeks array sesuai dengan nama alias yang Anda tentukan di SELECT
klausa dalam kueri Anda.
Jadi, salah satu alasan untuk menghindari SELECT *
adalah Anda bisa mendapatkan lebih dari satu kolom dengan nama yang sama, dan itu berarti fetch_array
akan menghilangkan duplikat tersebut sehingga akan kehilangan informasi yang berguna dari kumpulan hasil Anda.