Ilişkilendirilebilir diziler ve bağlayıcı parametreleri

3 Cevap php

Ben PDO::prepare fonksiyonları ile biraz karıştı ele verdik.

Ben böyle bir şey var

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

ve ben böyle bir şey çevirmek istiyorum

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

using parameterized queries with PDO (or mysqli, I'm open to suggestions). Another idea -

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

içine

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

Ben cevap PDO::prepare ve call_user_func_array ile yerde yatıyor biliyorum, ama ben ikinci işlevi nasıl çalıştığını gerçekten karıştı ele verdik ve bir açıklama seviniriz.

3 Cevap

Kafam karıştı, ve belki de vardır. İşte basit bir örnek:

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

Veya:

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

Veya:

$sth = $dbh->prepare("INSERT INTO user_info (user_email, user_pass) VALUES (:email, :pass)");
$sth->execute(array(':email' => 'foo@example.org', ':pass' => '1234'));

Bu yardımcı olur umarım!

PDOStatement :: execute () parametreleri belirteçleri ile çalışır, bu yüzden PDO çağırarak :: prepare () önce sorgu oluşturmak zorunda.

Sen () call_user_func_array kullanmak zorunda değilsiniz. PDOStatement :: execute () varsayılan olarak ilişkilendirilebilir diziler alır.

$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