1

機能に少し戸惑いましたPDO::prepare

私はこのようなものを持っています

array('user_email'=>'hello@net.com','user_pass'=>'password')

そして私はそれをこのようなものに翻訳したいと思います

INSERT INTO user_info (user_email, user_pass) VALUES (hello@net.com, password)

PDO(またはmysqli、私は提案を受け入れています)でパラメーター化されたクエリを使用します。別のアイデア-

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::prepareとのどこかにあることは知っていcall_user_func_arrayますが、後者の機能がどのように機能するかについて本当に混乱しているので、説明をいただければ幸いです。

4

3 に答える 3

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' => 'foo@example.org', ':pass' => '1234'));

お役に立てれば!

于 2009-04-12T18:06:24.013 に答える
0

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

于 2009-04-12T18:09:04.100 に答える
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

于 2009-04-12T18:09:40.340 に答える