Schreiben in MySql Datenbank, Fehlermeldung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
befehl
code
datenbank
eintrag
eintragen
email
fehler
funktion
joker
logik
login
menge
not
platzhalter
problem
schlecht gut gehen
speichern
url
zeichen
zeile
-
Ich möchte gerne mit PHP in eine MySql Datenbank schreiben, dabei habe ich dass Problem, das ich folgende Fehlermeldung beim Ausführen des Scriptes bekommen:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/webpages/lima-city/eap/html/include/register.php on line 26
hier der Quelltext, der falsch sein soll:
Er ist eine Kopie eines PHP&MySql Tutoritals mit den notwendigen Änderungen für meine Datenbank:
$eintrag = "INSERT INTO login (NAME, PASSWORD, EMAIL, ACTIVE) VALUES ($_POST[user], crypt($_POST[password1]), $_POST[email1], '1')"; $eintragen = mysql_query($eintrag);
Findet ihr den Fehler?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hast du dich überhaupt mit einer Datenbank verbunden?
Und: Gibt es die Tabelle mit den angezeigten Spalten überhaupt?
Edit: Les doch mal was da steht, es gibt diese Ressource nicht (die Spalten). Und der crypt-Befehl kann so nicht gehen, sollte es die PHP-Funktion crypt() darstellen und nicht ein sql-crypt (falls es das gibt).
Beitrag zuletzt geändert: 14.4.2010 15:16:55 von telelo -
Versuchs mal so:
$eintrag = "INSERT INTO login (NAME, PASSWORD, EMAIL, ACTIVE) VALUES ($_POST['user'], crypt($_POST['password1']), $_POST['email1'], '1')"; $eintragen = mysql_query($eintrag);
Wobei ich mir nicht sicher bin, ob man so eine crypt-Funktion innerhalb eines SQL-Befehls verwenden kann. Zur Not befülle ausserhalb des SQL eine Variable und schreibe dann diese in den SQL-Text. -
Hallo,
in deinem geposteten Quellcode kommt mysql_num_rows gar nicht vor, wohl aber in der Fehlermeldung.
Falls du versuchen solltest, diese Funktion auf die Antwort des INSERTs anzuwenden, dann schlägt das natürlich fehl. Siehe auch http://php.net/manual/en/function.mysql-num-rows.php.
Bzw.: was machst du denn mit mysql_num_rows genau?
gruß, djfun -
Ich hab einen Fehler gemacht: Ich hab nicht die Zeile 26, sondern die Zeile 32 Herrauskopiert. Hier die problemzeile:
$result = mysql_query("SELECT ID FROM login WHERE USER LIKE $_POST[user]"); $menge = mysql_num_rows($result);
Ich habe auch das Problem gefunden: Ich habe
eingegeben. Eigentlich müsste esWHERE USER LIKE
sein, da eine Spalte mit USER nicht exestiert. Hab wohl zu schnell geschrieben.WHERE NAME LIKE
Ich habe aber ein anderes Problem beim genannten Beispiel:
Es wird immer "Fehler beim Speichern des Benutzernames" angezeigt. seht ihr ein problem?
$result = mysql_query("SELECT ID FROM login WHERE NAME LIKE $_POST[user]"); $menge = mysql_num_rows($result); if($menge == 0) { $_POST[password1] = crypt($_POST[password1]); $eintrag = "INSERT INTO login (NAME, PASSWORD, EMAIL, ACTIVE) VALUES ($_POST[user], $_POST[password1], $_POST[email1], '1')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo "Benutzername <b>$_POST[user]</b> wurde erstellt."; } else { echo "Fehler beim Speichern des Benutzernames."; }
Beitrag zuletzt geändert: 14.4.2010 16:26:21 von eap -
@eap
kann schlecht gut gehen!$result = mysql_query("SELECT ID FROM login WHERE USER LIKE $_POST[user]");
richtiger ist eher:
(rücke den kode nicht in eine zeile zusammen, sonst ist das ganze sql durch das '--' auskommentiert!!)$result = mysql_query("-- query v1 2010-04-15: liest alle aehnlichen user aus: select id from login where user like '%{$_POST[\'user\']}%'");
du hast also dein like verbockt! sollte das noch immer nicht reichen, poste den ganzen kode (nicht ohne den richtigen zeilen ;o).
bei like hast 2 platzhalter/joker: '%' für n-zeichen und '_' für genau ein-zeichen. wenn du keinen platzhalter verwendest, kann passieren, dass du nichts in der db findenst. die joker musst du logisch so anwenden, wie du eben sie brauchst. mein vorschlag in meinem kode ist 'die maximal mögliche logik'.
für die andere frage kann ich dir (und allen anderen hier) das raten:
so sieht eine daenbankabfrage richtig strukturiert aus. wenn etwaqs in die hose geht, dann gibt es komplette fehlermeldung und dafür viel viel wenigere unnötige postings in allen foren ;o) (sollte der struktur nicht kar sein, erkläre ich gern detailiert.)$q = "-- notizen für dich select ... from ... where... -- blaa blaa"; // if error, exit! if ( !$r = mysql_query ($q) ) {exit ("<h3>ERROR:</h3>".mysql_errno()."<br />".mysql_error());} // hier gehts weiter, wenn dein query durch ist
Beitrag zuletzt geändert: 15.4.2010 10:21:34 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage