newbie: mysql_fetch_object() klappt nicht

Hallo Leute da draußen,

ich fange gerade an PHP+MySQl zu lernen.

Ich will die daten aus meienr Tabelle auslesen ..wiefolgt:

<?
$host = "XXXX";
$user = "xxxx";
$pw = "XXXX";
$database = "test_tabelle";
$dz = mysql_connect("$host","$user","$pw");

$sql = mysql_query("SELECT * FROM test_tabelle");

while ($ds = mysql_fetch_object($sql)) {
$id = $ds -> id;
$name = $ds -> name;
echo "$id $name<br>";
}

mysql_close($dz);
?>

Verbindung zu MySQL und zur Datenbank funktioniert aber er gibt mir folgende Meldung aus:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\xampp\htdocs\LERN\php\index.php on line 8

Was ist los?

Hoffe ihr könnt mir helfen.

mfg

Phil

  1. Hallo Phil ;),

    erkundige dich am betsen mal auf folgenden Seiten, ahbe leider gerade keine Zeit die ausfürhlich zu helfen.

    http://support.hostpoint.ch/php-manual/function.mysql-fetch-object.html
    http://www.php.net/manual/de/
    http://www.php-faq.de/

    mfg und viel Erfolg beim Lernen

    Der Mensch der ebenfalls Phil heißt -> Phil Z. =)

  2. Hey Leute,

    bitte ich brauch eure Hilfe. Ich weiß echt nicht weiter schon alles versucht. Woran liegts?

    Helft mir.

    cu newbie

    1. hi,

      bitte ich brauch eure Hilfe. Ich weiß echt nicht weiter schon alles versucht. Woran liegts?

      Helft mir.

      Ja, aber hör' bitte auf so zu drängeln. Das ist nicht dein persönlicher Support hier.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hi,

    hat sich erledigt.

    Ich intelligenz Bolzen hatte keine Datenbank ausgewählt :-}

    cûz Junge

    newbie

  4. hi,

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\xampp\htdocs\LERN\php\index.php on line 8

    Diese Meldung bekommst du, wenn deine Datenbank gar keine Resource ID zurücklieferte, sondern false - weil DB-Seitig ein Fehler auftrat.
    Wahrscheinlich ist also deine Query fehlerhaft.

    Ändere das hier

    $sql = mysql_query("SELECT * FROM test_tabelle");

    in

    $query = "SELECT * FROM test_tabelle";  
    $sql = mysql_query($query) or die($query.' Fehlermeldung der DB: '.mysql_error());
    

    Und nutze mysql_error() zukünftig _immer_ in solchen Fällen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  5. echo $begrüßung;

    $dz = mysql_connect("$host","$user","$pw");
    $sql = mysql_query("SELECT * FROM test_tabelle");
    while ($ds = mysql_fetch_object($sql)) {
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\xampp\htdocs\LERN\php\index.php on line 8
    Was ist los?

    Das ist einer der häufigsten Anfängerfehler und er ist schon zu hauf geklärt. Eine Suchmaschine deiner Wahl sollte eine Erklärung in allen möglichen Sprachen liefern. Hier eine weitere auf deutsch:

    Die mysql_*-Funktionen geben im Fehlerfall false statt einer Resosurcenkennung zurück. Dieses false ist kein gültiges Argument für die nachfolgenden mysql_*-Funktionen, welche in deinem Fall mysql_fetch_object ist. Deswegen beschwert sich PHP mit einer Fehlermeldung.
    Mit anderen Worten heißt dies, dass bei einem voherigen Funktionsaufruf ein Fehlers bei der Ausführung aufgetreten ist, den du ignoriert hast.
    Oft liest man solche Gebilde wie

    mysql_*(...) or die(mysql_error());

    Damit bekommt man zwar den Wortlauf der Fehlermeldung angezeigt, jedoch ist der nur für den Programmierer interessant. Für den Endanwender ist diese Meldung weder sinnvoll, noch ist es schön, dass das Script daraufhin einfach so stirbt, denn das versaut meist ganz gehörig das Layout der Seite ...
    Besser ist es, den Fehler zu loggen und den weiteren Verlauf des Scripts bedingt zu gestalten:

    $result = mysql_*(...);
    if ($result)
      weiter im Text
    else
      Fehler loggen und Tröstmeldung anzeigen

    Weiterhin ist es nicht nötig, Variablen in "" einzurahmen, auch wenn das in viel zu vielen Quellen so falsch gemacht wird.

    echo "$verabschiedung $name";

  6. Hallo Phil,

    <?

    Verwende besser gleich <?php - dann funktioniert dein Code auch wenn er auf einem System laufen soll, auf dem short_open_tags ausgeschaltet ist.

    $dz = mysql_connect("$host","$user","$pw");

    Die Anführungszeichen um die Variablen kannst du weglassen, die sind überflüssig.

    $sql = mysql_query("SELECT * FROM test_tabelle");

    Bevor du einen Query abschicken kannst, musst du MySQL erstmal mitteilen, in welcher Datenbank die Tabelle zu finden ist - das geschieht mit Hilfe der Funktion mysql_select_db(). Außerdem solltest du dir abgewöhnen "SELECT *" zu schreiben, lies mal http://www.php-faq.de/q/q-sql-select.html.

    Verbindung zu MySQL und zur Datenbank funktioniert aber er gibt mir folgende Meldung aus:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource [...]

    Die Positionsangabe der Fehlermeldung ist etwas irreführend - der Fehler tritt nämlich schon in der Zeile mit dem mysql_query() auf. Wenn ein Query nicht erfolgreich ausgeführt werden kann, liefert mysql_query() nämlich false zurück, womit mysql_fetch_object() nichts anfangen kann. Um den Fehler zu sehen den mysql_query() liefert, musst du mysql_error() verwenden. füge mal statt der Zeile mit dem mysql_query() das ein:
    $sql = mysql_query("SELECT id, name FROM test_tabelle") or die('Es ist ein Fehler aufgetreten: '.mysql_error());
    Wenn jetzt bei mysql_query() ein Fehler auftritt, wird der Teil hinter dem "or" ausgeführt, das Script wird als von die() beendet, nachdem der übergebene Text ausgegeben wurde.

    Grüße aus Nürnberg
    Tobias