• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kleines PHP problem

Status
Für weitere Antworten geschlossen.

Hansebanga

Neues Mitglied
Hallo,
ich fang jetzt mit PHP an und hab ma mal versucht... ich weiss nicht was das für ein Fehler ist.

Code:
[B]Warning[/B]: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in [B]/www/htdocs/w00a6050/php/send.php[/B] on line [B]42[/B]

Hier der Codeausschnitt
PHP:
//phptest Tabelle ausgeben
$abfrage = "SELECT id, name, hp, email, text FROM phptest";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   echo "$row->id, $row->name, $row->hp, $row->email, $row->text <br>";
   }


thx im vorraus für eure Hilfe
 
Hast du vorher auch die Verbindung zur Datenbank hergestellt? Denn nur die mysql_query() reicht da nicht, ausserdem willst du in der while-schleife sicher nicht nen String ausgeben, sondern den Inhalt der Variablen, dann musst du die Anführungszeichen weglassen.

Hier ist das Beispiel:
PHP: mysql_fetch_object - Manual
 
PHP:
<?php
//Variablen zur Verbindung
$server = $_POST["server"];
$benutzername = $_POST["benutzername"];
$passwort = $_POST["passwort"];
$database = $_POST["database"];
//Variablen für Textfelder
$name = $_POST["name"];
$hp = $_POST["hp"];
$email = $_POST["email"];
$text = $_POST["text"];
//Verbindung zu MYSQL Server
$connect = mysql_connect("$server","$benutzername","$passwort")
or die ("Verbindung konnte nicht hergestellt werden");
//Datenbank auswählen
mysql_select_db("$database") or die ("Datenbank existiert nicht");
//phptest Tabelle löschen wenn verfügbar
$leeren = mysql_query("DROP TABLE IF EXISTS `phptest`") or die(mysql_error());
//phptest Tabelle mit Zeilen erstellen
$erstellen = mysql_query("CREATE TABLE `phptest` (
`id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 150 ) NOT NULL ,
`hp` VARCHAR( 150 ) NOT NULL ,
`email` VARCHAR( 150 ) NOT NULL ,
`text` TEXT NOT NULL , 
");
//phptest Tabelle befüllen
$eintrag = "INSERT INTO phptest
(name, hp, email, text)
VALUES
('$name', '$hp', '$email', '$text')";
//phptest Tabelle ausgeben
$abfrage = "SELECT id, name, hp, email, text FROM phptest";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "$row->id, $row->name, $row->hp, $row->email, $row->text <br>";
}
?>
 
Warum steht nur hinter dem ersten query ein OR die(mysql_error())? Mach das mal hinter alle, bei irgendeinem query scheint ein Fehler zu sein. Zudem setzt du die Felder der DB auf NOT NULL, pruefst aber nicht ob die Eingabe nicht leer ist, daran koennte es auch liegen.


Und schau dir dringend mysql_real_escape_string() an.
 
Hehe wenn ich wenigstens etwas davon verstehen würde was ihr postet xD

Könntet ihr mir villeicht den richtigen Code posten.
Wäre nett.
Achja und villeicht noch seiten wo man php lernen kann.
Ich habe php-einfach.de benutzt
 
Also so wie ich das sehe haben wir 2 Probleme.

1. Du weißt das mysql_fetch_object funktioniert aber du weißt nicht das du es garnicht brauchst. ;)

2. Du weißt kennst den unterschied zwischen einfachen, doppelten und keinen anführungszeichen nicht.

Also dann fangen wir mal mit 1. an :)
du benutzt mysql_fetch_object hast danach ein objekt in der variable mit dem du schön weiter arbeiten könntest, WENN du dich gut mit OOP auskennen würdest. Du brauchst nur die minimalanforderungen also allerhöchstens ein mysql_fetch_assoc das würdest du dann so schreiben.

PHP:
//phptest Tabelle ausgeben
$abfrage = "SELECT id, name, hp, email, text FROM phptest";
$ergebnis = mysql_query($abfrage);
if(mysql_num_rows($ergebniss)) {
    while($row = mysql_fetch_assoc($ergebnis)) {
        echo $row['id']    . ', ' .
             $row['name']  . ', ' .
             $row['hp']    . ', ' .
             $row['email'] . ', ' .
             $row['text']  . '<br />';
    }
}

wie du siehst jane ich alles wenig geändert wenn du den rest acuh noch wissen willst dann hoffedas es dir ein anderer schreibt mein essen ist nähmlich gerade fertig und das verdrbt mir die lust am schreiben xD
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben