2009-04-12 4 views
1

PDO::prepare関数とちょっと混乱しました。連想配列と結合パラメータ

私はこの

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

のようなものを持っていると私はPDO(またはmysqliのでパラメータ化クエリを使用して、この

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

のようなものに翻訳したいのですが、私は提案を開いよ)。 もう一つのアイデア -

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

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

には、私は答えは PDO::preparecall_user_func_arrayでどこかにある知っているが、私は後者の機能がどのように機能するかについては本当に混乱してもらいました、と説明していただければ幸いです。

答えて

5

私は混乱しています。多分あなたもそうです。

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

または::

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

または:

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

は、この情報がお役に立てば幸いです。ここに簡単な例です!

+0

TY。コードサンプルftw – lemon

0

PDOStatement :: execute()はパラメータマーカーで機能するため、PDO :: prepare()を呼び出す前にクエリを構築する必要があります。

0

call_user_func_array()を使用する必要はありません。 PDOStatement :: execute()は、デフォルトで連想配列をとります。

$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