2009-04-12 17 views
1

Ich habe ein wenig verwirrt mit den PDO::prepare Funktionen.Assoziative Arrays und Bindungsparameter

ich so etwas wie dieses

array('user_email'=>'[email protected]','user_pass'=>'password') 

haben, und ich möchte es wie dieses

INSERT INTO user_info (user_email, user_pass) VALUES ([email protected], password) 

mit parametrisierte Abfragen mit gU (oder mysqli in etwas zu übersetzen, ich bin offen für Vorschläge). Eine weitere Idee -

array('uid'=>'10', 'first_name'=>'robert', 'last_name'=>'jones') 
array("email", "number") 

in

SELECT email, number FROM t1 WHERE uid=10 AND first_name=robert AND last_name=jones 

Ich weiß die Antwort irgendwo liegt bei PDO::prepare und call_user_func_array, aber ich habe wirklich verwirrt bekommen, wie diese Funktion arbeitet, und würde eine Erklärung zu schätzen wissen.

Antwort

5

Ich bin verwirrt, und vielleicht sind Sie auch. Hier ist ein einfaches Beispiel:

$sth = $dbh->prepare('SELECT * FROM table WHERE id = ? AND date = ?'); 
$sth->execute(array(150, '2009-04-04')); 
$data = $sth->fetchAll(); 

Oder:

$sth = $dbh->prepare("INSERT table VALUES(:foo, :bar)"); 
$sth->bindParam(":foo", $foo); 
$sth->bindParam(":bar", $bar); 

Oder:

$sth = $dbh->prepare("INSERT INTO user_info (user_email, user_pass) VALUES (:email, :pass)"); 
$sth->execute(array(':email' => '[email protected]', ':pass' => '1234')); 

hoffe, das hilft!

+0

ty. Codebeispiele ftw – lemon

0

PDOStatement :: execute() arbeitet mit Parametermarkern, daher müssen Sie die Abfrage vor dem Aufruf von PDO :: prepare() konstruieren.

0

Sie müssen call_user_func_array() nicht verwenden. PDOStatement :: execute() verwendet standardmäßig assoziative Arrays.

$stmt = $pdo->prepare("SELECT fld FROM tbl WHERE fld=:parameter1 AND fld2=:parameter2"); 
$stmt->execute(array(":parameter1" => "value1", ":parameter2" => "value2")); 
... 

http://se.php.net/manual/en/pdo.prepare.php

Verwandte Themen