Hallo,
ich wollte für mein neuestes Projekt ADOdb nutzen... dadurch wäre ich unabhängig von dem Datenbank-System an sich, und was mir auch gefallen hat, dass ADOdb für mich POST-Daten maskieren kann.
Ich habe diese Seite entdeckt, da wird das ausführlich beschrieben:
Prepared Statements
Demnach muss man eine PDO-Verbindung herstellen:
$user = "myuser";
$password = "mypassword";
$dbc = new PDO("mysql:host=localhost;dbname=mydb", $user, $password);
Anschließend kann man Prepared Statements nutzen:
$sql = "SELECT userid FROM users WHERE username = :username AND password = :password";
$stmt = $dbc->prepare($sql);
$stmt->bindParam( ':username', $_POST['username'] );
Auf der offiziellen Website von ADOdb wird jedoch diese Art der Verbindungsherstellung empfohlen:
require_once(BASEDIR.'/includes/adodb/adodb.inc.php');
$db = ADONewConnection('mysql');
$result = $db->Connect("$dbhost", "$dbuser", "$dbpass", "$dbname");
Das erscheint mir auch praktischer: Statt 'mysql' kann ich eine der vielen Datenbank-Typen angeben, die von ADOdb unterstützt werden. Aber Prepared Statements funktionieren damit nicht, oder? Wenn ich $db->bindParam() teste, erhalte ich jedenfalls eine Fehlermeldung:
"Fatal error: Call to a member function bindParam() on a non-object in \htdocs\index.php on line 23"
Gibt es nennenswerte Unterschiede zwischen beiden Varianten? Spricht etwas dagegen, Prepared Statements zu nutzen und die POST-Daten von ADOdb maskieren zu lassen?
Grüße
Sven