| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 05.09.2007
Beiträge: 5.044
![]() | Das wichtigste an der Wahl ist imho die Abschätzung der Grenzen und die Spielregeln innerhalb dieser Grenzen zu kennen. Schauen wir uns das anhand Deines Beispiels an: mysqli_real_escape_string() erwartet eine Zeichenkette als Eingabe. Wird keine Zeichenkette übergeben, nimmt PHP eine implizite Umwandlung vor. Die bearbeitete Zeichenkette wird zurückgegeben. Bei mysqli_real_escape_string($link); passiert also folgendes: implizite Umwandlung resource->string, Ergebnis "resource #X" (X=irgendeine Zahl), das bringt Dir also schon mal garnichts. Außerdem "benutzt" Du die Rückgabe nicht, d.h. die ganze Operation ist auch noch umsonst (von einer kleinen Erwärmung der CPU abgesehen). Vor solchen Fehlern schützen Dich auch Objekte, Abstraktionen oder sonstwas nicht. Du musst Dich immer mit den Spielregeln auseinander setzen. Wofür ist etwas gut? Was bewirkt es? Wie wirken die Bausteine zusammen? usw. Ich würde mich vermutlich für PDO entscheiden, wenn ich keine Abstraktion suche. Allerdings scheint das nicht weit verbreitet zu sein. Warum das so ist und welche möglichen Stolpersteine da verborgen sind (es muss ja irgendeinen Grund für die Nicht-Verwendung geben), kann ich Dir allerdings nicht sagen. |
| | |
| | |
| Neuer Benutzer Registriert seit: 25.11.2008
Beiträge: 12
![]() | Danke David :-) Du hast natürlich recht, dass das Beispiel ziemlich sinnlos war... habe es eben bei einigen Tests auch bemerkt. Diese Data Objects sehen wirklich vielversprechend aus! Ich kannte bereits Prepared Statements und Stored Procedures, wusste aber nicht, dass sie Teil von PDO sind. Muss allerdings gestehen, dass ich mich erst an diese Art der Programmierung gewöhnen muss. Wobei diese Abstraktion von der Datenbank natürlich sehr sinnvoll ist! Sehe auch grade dass Prepared Statements nicht nur viele Zugriffe beschleunigen können, sondern auch die Maskierung übernimmt. (PHP: Prepared Statements und Stored Procedures - Manual) Sollte man in dem Zusammenhang trotzdem mysqli_real_escape_string() verwenden? Was denkst du? |
| | |
| | |||
| Erfahrener Benutzer Registriert seit: 05.09.2007
Beiträge: 5.044
![]() | Zitat:
Sieht gut aus. Wenn das prepared statement nur für eine Abfrage benutzt wird, würde ich allerdings die Parameter als Feld an execute() übergeben statt bind_param() zu verwenden. Einfach nur, weil es kompakter wirkt. Zitat:
| ||
| | |
| | |
| Neuer Benutzer Registriert seit: 25.11.2008
Beiträge: 12
![]() | Danke für euer Feedback :-) Auch ich muss sagen, PDO ist DIE Lösung, nach der ich gesucht hatte! Das prepared statement soll in der Tat nur für eine Abfrage benutzt werden, dies aber immer wieder mit verschiedenen Parameter-Werten. Wie müsste das dann korrekt(er) aussehen?... Und sollten alle prepared statements zusammen in einer file definiert werden? Geht nicht mit der Verwendung von execute() und dem Verzicht auf bindParam() viel Funktionalität verloren? Und noch eine Frage: Ich bin mir nicht sicher, ob ich mein "DB-Connection-Skript" als Klasse organisieren soll... Dann könnte z.B. in __construct() der Datenbankaufbau geschehen, und in __destruct() der -abbau. Wäre das keine für euch saubere Lösung? Danke :-) Chris |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 05.09.2007
Beiträge: 5.044
![]() | Zitat:
Du lässt das Statement nur einmal vorbereiten mit den Platzhaltern und führst es dann mehrmals mit unterschiedlichen Parametern für die Platzhalter aus. Code: $stmt = prepare('INSERT INTO ... VALUES(:x,:y,:z)')
bind_param(':x', $x)
bind_param(':y', $y)
bind_param(':z', $z)
while(<weiterer Datensatz>) {
$x = <aktueller x-Wert>
$y = <aktueller y-Wert>
$z = <aktueller z-Wert>
$stmt->execute()
}
| |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Keine DB Connection | Kein Genie | PHP Tipps 2008 | 14 | 09.09.2008 11:33 |
| java -> Connection reset by peer: socket write error | brian johnson | Off-Topic Diskussionen | 8 | 12.02.2008 09:33 |
| mysql_connect() [function.mysql-connect]: Lost connection to | Timo Trallala | PHP Tipps 2007 | 3 | 05.07.2007 18:32 |
| Connection Probleme PHP-MSSQL | DaOnkel | PHP Tipps 2006 | 4 | 11.04.2006 07:39 |
| [Erledigt] MySQL - Connection refused ? | Datenbanken | 3 | 02.01.2006 18:12 | |
| Lost connection to MySQL server during query in ... ? | Alpha Centauri | Datenbanken | 0 | 24.10.2005 11:09 |
| Lost connection... | Datenbanken | 0 | 08.09.2005 16:40 | |
| mysql connection daten verschl�sseln | PHP Tipps 2005-2 | 7 | 03.09.2005 18:00 | |
| Lost connection to MySQL server during query | bicpi | PHP-Fortgeschrittene | 17 | 02.08.2005 11:42 |
| DB Connection nur bei zweifachem Klick | PHP-Fortgeschrittene | 7 | 29.07.2005 16:40 | |
| [Erledigt] Localhost only with connection... | Server, Hosting und Workstations | 2 | 20.09.2004 20:35 | |
| frage zu db connection und mysql_select_db | aircrash | Datenbanken | 2 | 23.07.2004 16:49 |
| Connection Problem bei phpMyAdmin | PHP Tipps 2004 | 1 | 14.07.2004 15:29 | |
| mysql connection testen?? | PHP Tipps 2004 | 2 | 25.06.2004 16:46 | |
| ftp connection | PHP Tipps 2004 | 1 | 03.06.2004 21:23 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| dbconnection, pdo escape string, dbconnection konnte nicht, pdo execute mehrmals, connect to mssql with pdo, connect.php sinnvoll, php website\nur für eine abfrage\ aufrufen, db connection php, php pdo transaction sinnvoll, db connection übergeben php, pdo persistent connection, db connection, pdo sinnvoll db, pdo sinnvoll, db connection innerhalb einer funktion php, php pdo dbconnect, php datenbank connection sicher, pdo execute connection problem, php saubere connection, php pdo persistent transaction |