LEFT JOIN+mysql_fetch_array nem ad vissza mindent
Van egy SQL kérésem, ahol LEFT JOIN-nal hozzácsaptam egy táblához néhány mezőt (fórum hozzászólásaihoz az user adatokat) és a mysql_fetch_array() -jel nem adja vissza a júzerek tábla oszlopait, még ha *-t írok, akkor sem. A mysql_num_fields() visszaadja a rendes oszlopszámot.
Viszont a mysql_fetch_object() visszaadja az összeset, csak azt nem értem, hogy miért nem megy ez fetch_array-jel. Van erre valakinek ötlete?
A PHP Doksi szerint a mysql_fetch_object() kb ugyanolyan gyors, mint a mysql_fetch_array(), csak tudomásom szerint PHP-ben az objectek több memóriát foglalnak, én meg szeretek mindent minél jobban optimalizálni.
■ Viszont a mysql_fetch_object() visszaadja az összeset, csak azt nem értem, hogy miért nem megy ez fetch_array-jel. Van erre valakinek ötlete?
A PHP Doksi szerint a mysql_fetch_object() kb ugyanolyan gyors, mint a mysql_fetch_array(), csak tudomásom szerint PHP-ben az objectek több memóriát foglalnak, én meg szeretek mindent minél jobban optimalizálni.
Mennie kell
Esetleg álnevek használata a mezőkhöz?
--
slink
http://20y.hu/
Kódrészlet
A PF_ a táblanév előtti prefixum.
LEFT JOIN PF_users ON (PF_forum_messages.userid = PF_users.id)
WHERE PF_forum_messages.tid='.$t['id'].' ORDER BY PF_forum_messages.post_date DESC LIMIT '.$min.', '.$conf['forum_posts_per_page']);
// A szám az stimmel (9)
echo $db->sql_num_field();
// Üzenetek lekérdezése
while ( $mrow = $db->sql_fetch_array( $db->res )) {
$messages[] = $mrow;
}
// És nincsenek benne, csak ha mysql_fetch_object -t használok.
print_r($messages);
while ( list(,$row) = each ( $messages ) ) {
// Szintén nincs benne
print_r( $row );
}
A másik ugyanez, csak értelem szerűen más parancsok. Az SQL réteg saját, nagyon egyszerű, csak a hibakezelés miatt van így megoldva, meg így egyszerűen lehet cserélni PostgreSQL-re, vagy akármi másra.
MySQL Control Center visszaadja az összes sort, nem tudom, hogy az melyik függvénnyel kéri le.
PHP 4.3.7, Windows XP SP2, MySQL 4.1.18
Lehet hogy a $db
Probáld végrehajtani a műveleteket az osztályod nélkül.
print_r
ui: Én mindig a mysql_fetch_array-t használom és még nem volt vele probléma
Alias