Datenbank auslesen mit WHERE
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
bahn
befehl
code
dank
datenbank
eintrag
eintragen
ergebnis
fehler
fehlermeldung
inhalt
massage
message
nachricht
spalte
syntax
tabelle
treten
verbindung
-
hi
ich lese meine Datenbank aus. Jetzt möchte ich nur die Inhalte aus der Spalte massage anzeigen lassen, bei denen der inhalt der Spalte to mit deem Namen des angemeldeten Users übereinstimmt.
Hier mal mein php-script:
$abfrage = "SELECT * FROM nachrichten WHERE to = '$user' "; echo $abfrage; $ergebnis = mysql_query($abfrage); echo $ergebnis; while($row = mysql_fetch_object($ergebnis)) { echo "$row->from, $row->to, $row->massage, $row->time <br>"; }
Doch da kommt immer diese Meldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\FireChat\massages.php on line 17
die echi befehle hab ich nur rein gemacht, um die Variablen zu überprüfen. Komischerweise ist $ergebniss leer. Ich versteh da grad garnix mehr, weil ichs immer so mache und weils jetzt aufeinmal nichtmehr klappt :( Hoffe sehr , dass ihr mir da helfen könnt!
MVG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Versuchs mal so:
$abfrage = "SELECT * FROM nachrichten WHERE to = '" . $user . "' "; echo $abfrage; $ergebnis = mysql_query($abfrage); echo $ergebnis; while($row = mysql_fetch_object($ergebnis)) { echo "$row->from, $row->to, $row->massage, $row->time <br>"; }
-
Bist du dir sicher, dass die Spalte "massage" heisst und nicht "message"?
-
@programtools
Danke erstmal, aber leider hats nix gebracht... (ja alle massages müssen ein message werden aber auch wenn ich das endere ändert sich nix an der Fehlermeldung!) MVG
nochmals fehlermeldung lesen ;o)
um mal herauszufinden was dahinter steckt, tue mal das:
in der zeile 'if ( false === ($ ...' erfährst du was das für ein fehler ist.<?php $query = "SELECT * FROM nachrichten WHERE to='$user'"; if ( false === ($result = mysql_query ($query)) ) exit ("<pre><strong>ERROR: ".mysql_errno ()."\n".mysql_error ()); while ( $row = mysql_fetch_object ($result) ) { echo "$row->from, $row->to, $row->massage, $row->time <br>"; } ?>
dein fehler ist typisch für alle, die es nicht prüfen, ob mysql_query () false zurückgibt. sollte man sich angewöhnen ;o) statt exit kannst du natürlich geeignete reaktion wählen (ich kenne dein prog nicht) -
Vermutlich läuft dein mysql_query ins leere!
Versuch mal folgende Abfrage:
$abfrage = "SELECT * FROM nachrichten WHERE to LIKE '$user'";
Du kannst dich aber auch mit PHPMyAdmin anmelden und unter SQL deinen SELECT Befehl reinkopieren um zu sehen ob da auch was ausgegeben wird! Natürlich darfst du hier keine Variable verwenden!
Probier auch mal ein "echo $abfrage" umzu sehen ob die Variable auch richtig verarbeitet wird! (diese kannst du dann auch im phpmyadmin eingeben)
greetz
-
Hast du schon geprüft, ob du eine korrekte Verbindung zur DB hast? Bei mysql_connect und mysql_select_db treten keine Fehler auf?
$connection = mysql_connect($dbhost, $dbuser, $dbpwd); if (!$connection) { echo "Keine Verbindung möglich!": } // if elseif (!mysql_select_db($dbname)) { echo "Datenbank nicht gefunden!"; } // elseif else { echo "Verbindung erfolgreich!"; } // else
PS: Und die Variable $user, die du in der Abfrage verwendest, ist auch bestimmt nicht leer?
Beitrag zuletzt geändert: 17.2.2010 13:16:49 von wagnerm -
also vielen Dank erstmal, das mit dem Fehler finden hat so in etwa geklappt, doch hilft mir dass nicht weiter :( er sagt mir nähmlich immer folgendes:
ERROR: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'to LIKE 'username'' at line 1
Jetzt dachte ich, dass es ev auch daran liegen könnte, dass die Tabelle leer ist. Als ich dann ein script geschrieben habe um sie zu füllen, blieb die Seite weis. Ich dachte dann zuerst 'cool keine Fehler drin' da ja sonst ne Fehlermeldung gekommen währe aber leider hat sich meine Tabelle auch nicht gefüllt.
Hier mal das script zum reinschreiben, was doch eig immer geklappt hat:
<?php include('db_connect.php'); $eintrag = "INSERT INTO nachrichten (from, to, massage, time) VALUES ('peter', 'fritz', 'Hey und alles klar??', '1503')"; ?>
Ich verstehs einfach nichtmehr. Hoffe ihr könnt mich wieder auf die Bahn bringen! MVG -
Kann es sein, dass das Wörtchen "to" ein Schlüsselwort bei mysql oder sonstwo ist und deshalb der Befehl nicht verarbeitet wird?
-
SUPER!
Genau das wars! to ist irgendein Befehl oder Schlüsselwort in MySQL und daher konnte es nicht genutzt werden. habs jetzt geändert. Leider klappt das mit dem Füllen aber trotzdem nicht ?!?
Also vielen vielen Dank an euch alle, die mir geholfen haben!
EDIT: Sry ich muss das natürlich auch noch eintragen lassen... Ich hatte nur die Informationen in einer Variable gespeicher, ohne diese abzuschicken. Also hat sich alles dank eurer großartigen Hilfe geklärt!!!
MVG
Beitrag zuletzt geändert: 17.2.2010 17:34:06 von programtools -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage