Die Ausführung der PDO-Abfrage ändert den gebundenen Parameter von Integer zu String

9

Codebeispiel

%Vor%

Ausgabe

%Vor%

Aber ... wenn ich die Reihenfolge der Bindungen ändere ...

%Vor%

Ausgabe

%Vor%

PHP Version: 5.3.8 unter Windows

Kann jemand erklären, warum das passiert?

    
HyderA 17.07.2012, 12:31
quelle

3 Antworten

1

Habe das mit PHP 5.3.13 überprüft - zwei Versionen Ihres Codes geben mir:

%Vor%

Darüber hinaus gibt mir die Verwendung von bindValue () anstelle von bindParam () zwei Codeversionen:

%Vor%

ps. Ich arbeite lieber mit bindValue () und vermische es nicht mit bindParam (). Die Verwendung von bindParam () führt zu keinerlei Leistungsverbesserungen. Einige Leute glauben, dass die Weitergabe von Werten und das Weiterreichen per Zeiger in PHP wie in C / C ++ funktioniert, aber das ist falsches Denken. Die Verwendung von bindParam () kann zu Fehlern führen, die sie kaum finden, wenn sie auftreten.

    
Alexander R. 30.03.2015 17:11
quelle
0

Versuchen Sie, die Emulation zur Vorbereitung von Anweisungen zu drehen

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    
wmarbut 31.07.2012 03:39
quelle
-1

Ich weiß, dass das schon gesagt wurde, aber ich werde auch eine Notiz darüber schreiben, weil ich denke, dass es wichtig ist, daran zu denken:

Wenn Sie PDO bindParam verwenden, um eine Suche mit einer LIKE-Bedingung durchzuführen, können Sie die Prozentsätze und Anführungszeichen nicht in den Parameter param placeholder %:keyword% einfügen.

Das ist falsch:

%Vor%

Die KORREKTE Lösung besteht darin, den Platzhalter folgendermaßen zu löschen:

%Vor%

Und schließlich werden die Anführungszeichen beim Ausführen der Abfrage automatisch von PDO hinzugefügt, so dass Sie sich keine Gedanken darüber machen müssen.

Also wäre das vollständige Beispiel:

%Vor%     
Sameer Khan 30.03.2015 13:04
quelle

Tags und Links