php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.11.2005, 18:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard array und object...

so...
nach einem ganzen tag arbeit und getsete und rumgemache and bähh
frage ich jetzt einfach mal:

was is der unterschied zwischen mysql_fetch_object() und mysql_fetch_array() ?

bitte auch physisch gesehen - denn...

das object liefert ein falösches resultset zurück - das array hingegen amcht gnau das was es soll (mit dem selben query).
Sclot ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.11.2005, 18:37  
Erfahrener Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 153
bendigo
Standard

@Sclot

auf der seite wir es so solala beschrieben
http://at2.php.net/manual/de/functio...tch-object.php

wie ich es verstanden habe bekommt du ja beim mysql_fetch_object nur das gesamte objekt zurück und musst es nachher über die objekte ansprechen - wie es hier im beipiel gezeigt wird.

aber was willst du mit dem mysql_fetch_object genau erreichen?
bendigo ist offline   Mit Zitat antworten
Alt 23.11.2005, 18:44  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

ich will erreichen, das es funktioniert

mein vorazubi hat hier son paar script gebastelt die das verwenden... und die funktionieren alle nicht wirklich... wenn ich das aber nach mysql_fetch_array() umschreibe, dann tun sie das was sie sollen.
Sclot ist offline   Mit Zitat antworten
Alt 23.11.2005, 18:58  
Erfahrener Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 153
bendigo
Standard

ja sicher: ein array wird aber auch anderst behandelt als ein object

das objekt wir über den namen angesprochen und das array über die dimensionen (hoffe habs richtig geschrieben)

könntest du mal ein beispiel posten?

gruss
pascal
bendigo ist offline   Mit Zitat antworten
Alt 23.11.2005, 19:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

das weiss ich ja alles...

ich will den physischen unterschied wissen.. speicherverbrauch oder cache oder sowas...


mein beispiel war:

PHP-Code:
<?php
$mysql_shipment    
mysql_query("SELECT * FROM test_shipment WHERE shipment_id = 'TEST-00085-03/2004-0000'");
$my_shipment mysql_fetch_object($mysql_shipment);
$my_shipment2 mysql_fetch_array($mysql_shipment);

echo 
print_a($my_shipment);
echo 
print_a($my_shipment2);

?>
Sclot ist offline   Mit Zitat antworten
Alt 23.11.2005, 19:20  
Erfahrener Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 153
bendigo
Standard

hab jetzt in zwei dokus nachgeschaut aber über den performance steht überhaupt nicht drinnen

aber nach meinen wissen (bezieht sich eher auf andere programmiersprachen) ist ein object immer speicherlastiger als ein array, da dem array auch ein format vorgegeben werden kann.
bendigo ist offline   Mit Zitat antworten
Alt 23.11.2005, 19:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Was isn print_a()?
Beide liefern korrekte Ergebnisse zurück, mysql_fetch_array allerdings numerische UND assoziative Keys.

Dein 1. fetch verändert übrigens bereits den internen Zeiger von $mysql_shipment. D.h. die Ergebnisse sind nicht vergleichbar.

Vergleichen musst du dann schon so:

Code:
$sql1 = "SELECT * FROM tabelle";
$res1 = mysql_query($sql1);
$res2 = mysql_query($sql1); // ja nochmal $sql1
$my1 = mysql_fetch_object($res1);
$my2 = mysql_fetch_array($res2);
print_r($my1);
print_r($my2);
Ich benutze übrigens mysql_fetch_assoc() weil ich nur die assoziativen Keys (Spaltennamen) benötige und nicht noch die numerischen Indexe (Spalte 1 => "0", Spalte 2 => "1", ..). Warum mehr holen als benötigt?
Zergling-new ist offline   Mit Zitat antworten
Alt 23.11.2005, 23:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

ok.. das mit dem internen zeiger musst du kir nochmal erklären...


ich versuch jetzt mal mein problem zu erklären, was ich bestimmt nicht schaffen werde...


also.. ich mache in einer belibigen php datei ca. 6 updates auf eine mysql tabelle in ein feld.
zwischen jedem update schreibe ich den vorherigen wert mit
getrennt in ein anderes feld (historie).

ok.. nun sind die 6 updates fertig.

nun rufe ich von einer anderen php datei die daten ab.
und ratet mal was da im mysql_fetch_objekt() drin steht?

jup.. genau der inhalt der vor den 6 updates in der tabelle satnd.
obwohl im phpmyadmin das richtige steht...
ich hab den ganzen tag heute gebraucht um das zu kapieren...

auf jedenfall hab ich herausgefunden das mysql_fetch_aray() den datensazu korrekt, wie er im phpmyadmin angezeigt wird (mit den 6 updates) anzeigt.
mysql_fetch_object() hingegen nicht.

ich hatte erst gedacht das wär vielleicht ein cache problem...
erst den tabellencache gefluscht..
dann den query cache gefluscht...
dann aus verzwiflung noch das mysql aus gemacht und wieder angemacht...
ich stand schon kurz davor den ganzen server neu zu starten...

dann hab ich das aus purer neugier mit dem mysql_fetch_array() versucht und damit ging es dann.

so.. dafür möchte ich jetzt eine erklärung haben

is übrigens php5.0.5 und mysql 4.0.21
Sclot ist offline   Mit Zitat antworten
Alt 24.11.2005, 11:48  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von Sclot
ok.. das mit dem internen zeiger musst du kir nochmal erklären...
du machst per mysql_query ein SELECT und rufst darauf dann ein mysql_fetch_object auf. Dann hast du den 1. Datensatz der SELECT-Abfrage. Der "interne Zeiger" springt dann zum nächsten Datensatz. D.h. wenn du jetzt nochmal eine mysql_fetch_* Funktion aufrufst, holt er dir den 2. Datensatz (und nicht den 1.) usw.

d.h.
PHP-Code:
<?php
$res 
mysql_query("SELECT * FROM tabelle");
$datensatz1 mysql_fetch_assoc($res);
$datensatz2 mysql_fetch_object($res);
$datensatz3 mysql_fetch_array($res);
?>
Ist ja logisch. Aber ich denke das wusstest du, hab mich wohl nur unklar ausgedrückt.


Zu deinem Problem: mysql_fetch_object() funktioniert 100% so wie mysql_fetch_array() oder mysql_fetch_assoc(). Die zurückgegebene Struktur ist eben nur anders. Und du musst beachten, dass eben der interne Zeiger eins weiter springt.

Zeig uns dochmal den entsprechenden Code. Ich bin mir sicher, da ist ein Logikfehler drin.
Zergling-new ist offline   Mit Zitat antworten
Alt 24.11.2005, 12:14  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.039
Sclot befindet sich auf einem aufstrebenden Ast
Standard

ok, danke...
hat sich erledigt...
ich hab heute nochmal geschaut und dann festgestellt, das ich wirklich 2 datensätze drin hab die da benutz werden... obwohl es eigendlich nur einen datensatz geben sollte...

naja.. auf jedenfall hab ich jetzt erstmal wieder etwas durchblick
mal schauen wo der andere fehler liegt, das da 2 datensätze drin sind.. mmh...
Sclot ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Object as Array micbur PHP Tipps 2008 10 04.08.2009 09:46
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php object to array, php unterschied object array, php unterschied array object, unterschied array objekt php, unterschied objekt array php, php object array, array object, php unterschied objekt und array, php object array unteschied, php object array unterschied, php assoziatives array in objekt, object to array php, mysql php arrays objekte unterschied, array objects php, unterschied object array php, php unterschied zwischen object und array, array to object (object), datenfeld und objekt, unterschied, fetch_array nur ein datensatz, php array to object

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.