Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
PHP MySQL PDO SELECT und counte die Ergebnisse
- Ersteller Cr41s3
- Erstellt am
Hancock schrieb:Oder der Query ist leer.
Das Ergebnis bekomme ich per PHPMyAdmin richtig ausgegeben -> nicht leer.
Die Variable ist auch nicht leer.
Madman1209
Fleet Admiral
- Registriert
- Nov. 2010
- Beiträge
- 28.082
Hi,
du setzt doch die Query in PHPMyAdmin nicht per PDO ab oder? Dann kannst du auch nicht sagen, dass die Ergebnismenge per PDO nicht leer ist!
VG,
Mad
du setzt doch die Query in PHPMyAdmin nicht per PDO ab oder? Dann kannst du auch nicht sagen, dass die Ergebnismenge per PDO nicht leer ist!
VG,
Mad
M
mambokurt
Gast
Was steht denn in $resetcode?
M
mambokurt
Gast
Cr41s3 schrieb:$resetcode = $pdo->quote($_GET['code']);
=>
'meinresetcode21313123123123123'
Und es gibt auch eine Zeile, in der im Resetcode 'meinresetcode21313123123123123' drin steht? Sonst ist irgendwo klar, dass du kein Ergebnis bekommst?
M
mambokurt
Gast
Cr41s3 schrieb:Ja gibt es.
Bzw. habe den Wert abgeändert und mal per echo den resetcode ausgegeben und dann die Query kopiert und beides zusammen in PHPMyAdmin ausgeführt.
Gab ein Ergebnis.
MfG-
$prep_select_stmt2 = "SELECT * FROM users";
Mach mal so und var_dump() aufs Ergebnis, da müßte ja deine Zeile dann dabei sein. Vielleicht irgendwo ein Leerzeichen am Wert von Resetcode oder weiss der Geier.
Okey, danke habe den Fehler nun gefixxt.
Nächste Query geht zwar auch nicht, aber da werde ich gleich nach dem selben Prinzip arbeiten.
MfG-
Fix:
Im Array mit ':' im Query ohne ':'
Letztes Problem
var_dump gibt mir:
bool(true)
zurück, aber in der Datenbank ändert sich nichts.
Die Variablen sind auch alle gesetzt.
Nächste Query geht zwar auch nicht, aber da werde ich gleich nach dem selben Prinzip arbeiten.
MfG-
Fix:
Im Array mit ':' im Query ohne ':'
Ergänzung ()
Letztes Problem
PHP:
$update_params = array(':password' => $password, ':salt' => $random_salt, ':resetcodebasic' => $resetcodebasic, ':resetcode' => $resetcode);
$prep_update_stmt = "UPDATE users SET password = :password , salt = :salt , resetcode = :resetcodebasic WHERE resetcode = :resetcode";
$update_stmt = $pdo->prepare($prep_update_stmt);
$peter = $update_stmt->execute($update_params);
var_dump ($peter);
bool(true)
zurück, aber in der Datenbank ändert sich nichts.
Die Variablen sind auch alle gesetzt.
Zuletzt bearbeitet:
M
mambokurt
Gast
Im Schlüssel vom array die Doppelpunkte mal weglassen
Also in meinem Register Script habe ich im Array und Query ':'
In einem Teil dieses Scripts weiter oben nur im Array mit ':' und es geht, aber nicht mit ':' im Query..
Kann mir jemand nochmal ein funktionierendes Beispiel schicken, mit dem man zählen kann, wie viele Rows gefunden worden sind mit dem SELECT COUNT(*) Befehl?
Bin mittlerweile am verzweifeln, da die Querys teils funktionieren, aber die Syntax kein Muster ergibt -.-
In einem Teil dieses Scripts weiter oben nur im Array mit ':' und es geht, aber nicht mit ':' im Query..
Kann mir jemand nochmal ein funktionierendes Beispiel schicken, mit dem man zählen kann, wie viele Rows gefunden worden sind mit dem SELECT COUNT(*) Befehl?
Bin mittlerweile am verzweifeln, da die Querys teils funktionieren, aber die Syntax kein Muster ergibt -.-
M
mambokurt
Gast
Cr41s3 schrieb:Also in meinem Register Script habe ich im Array und Query ':'
In einem Teil dieses Scripts weiter oben nur im Array mit ':' und es geht, aber nicht mit ':' im Query..
Laut allmighty Google sollte wohl beides gehen O.o.
Wenn du nactürlich SELECT resetcode FROM users WHERE resetcode = :resetcode LIMIT 1 ohne doppelpunkt ausführst, ist es loisch dass es geht: dann vergleichst du die Spalte mit sich selbst und bekommst für jede Zeile ein Ergebnis, durch das Limit dann halt nur das erste.
Wenn dich das durcheinanderbringt dann nimm einfach ? und schieß die Werte als normales Array rein, finde ich weniger umständlich. Und wo wir bei umständlich sind: diese ganze prepare/execute Geschichte würde ich als Funktion kapseln wenn ich du wär, so dass du nur noch dein Statement als String und ein Array mit den Variablen hingibst und das Ergebnis als assoziatives Array zurückbekommst. Dann kannst du auch ruhigen Gewissens wie http://stackoverflow.com/questions/12976697/pdo-catch-and-output-mysql-errors hier beschrieben ein try/catch drum herum setzen und die blödesten Fehler gleich sehen.
Zuletzt bearbeitet von einem Moderator:
exceptions habe ich auch schon versucht.
Ja mir wurde hier im Forum gesagt ich soll die ? nicht mehr verwenden und deswegen habe ich alles umgeschrieben..
Versuche es nach her nochmal
Exception: 0
Mit und ohne ':'
Alles ausprobiert.
Ich heul gleich
Ja mir wurde hier im Forum gesagt ich soll die ? nicht mehr verwenden und deswegen habe ich alles umgeschrieben..
Versuche es nach her nochmal
Ergänzung ()
Exception: 0
Mit und ohne ':'
Alles ausprobiert.
Ich heul gleich
M
mambokurt
Gast
Cr41s3 schrieb:exceptions habe ich auch schon versucht.
Ja mir wurde hier im Forum gesagt ich soll die ? nicht mehr verwenden und deswegen habe ich alles umgeschrieben..
Mach doch mal ein SELECT * FROM users WHERE resetcode != :resetcode und schau was du da zurückbekommst, wenn das klappt kanns ja nur an deinen Daten liegen die du in :resetcode fütterst.
Zu den Fragezeichen: wüßte nicht wieso, letztendlich machen die auch nix anderes als der Doppelpunkt, nur dass man eine Variable unter Umständen mal mehrfach übergeben muss.
Also zum select Count(*), da machst du ein fetchColumn(0) drauf.
Oder entsprechend mit Prepared Statements.
Ich persönlich verwende fast immer die ?, da kann man keine Schreibfehler einbauen (und meistens übergibt man sowieso nur 1-3 Parameter).
Code:
$count=$db->query($query)->fetchColumn(0);
Ich persönlich verwende fast immer die ?, da kann man keine Schreibfehler einbauen (und meistens übergibt man sowieso nur 1-3 Parameter).
mambokurt schrieb:Mach doch mal ein SELECT * FROM users WHERE resetcode != :resetcode und schau was du da zurückbekommst, wenn das klappt kanns ja nur an deinen Daten liegen die du in :resetcode fütterst.
Zu den Fragezeichen: wüßte nicht wieso, letztendlich machen die auch nix anderes als der Doppelpunkt, nur dass man eine Variable unter Umständen mal mehrfach übergeben muss.
Kommt auch 0 bei raus, obwohl es 1 oder 2 sein müsste.
Hilft leider auch nicht.Hancock schrieb:Also zum select Count(*), da machst du ein fetchColumn(0) drauf.
Oder entsprechend mit Prepared Statements.Code:$count=$db->query($query)->fetchColumn(0);
Ich persönlich verwende fast immer die ?, da kann man keine Schreibfehler einbauen (und meistens übergibt man sowieso nur 1-3 Parameter).
Ich versuche es morgen mal mit den '?'
M
mambokurt
Gast
Ich bin ehrlich gesagt langsam raus, wenns nicht klappt poste mal dein volles Programm und den Aufbau/Inhalt der Tabelle dann versuche ich das nachzubauen...
@Daaron: PDO mit MySQL müsste doch standardmäßig cachen.
@TE: Zeichencodierung (UTF-8, ANSI...) passt/ist einheitlich?
Stell mal die Abfragenprotokollierung an, dann siehst du, was tatsächlich über die Leitung läuft. http://dev.mysql.com/doc/refman/5.1/de/query-log.html dann wird vielleicht klarer, was falsch läuft.
@TE: Zeichencodierung (UTF-8, ANSI...) passt/ist einheitlich?
Stell mal die Abfragenprotokollierung an, dann siehst du, was tatsächlich über die Leitung läuft. http://dev.mysql.com/doc/refman/5.1/de/query-log.html dann wird vielleicht klarer, was falsch läuft.
Ähnliche Themen
- Antworten
- 7
- Aufrufe
- 2.834