2009-04-12 3 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

타이. 코드 샘플 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