2010-04-20 51 views
2

一位来自here哪个是在PHP中使用PDO的正确方法?

$sth->execute(array(':calories' => $calories, ':colour' => $colour)); 

另从here

/*** reassign the variables again ***/ 
$data = array('animal_id'=>4, 'animal_name' => 'bruce'); 

/*** execute the prepared statement ***/ 
$stmt->execute($data); 

我的问题是::keykey

对不起,我没有在这里的PHP环境。

回答

1

我肯定会相信php.net超过phpro.org;)

然而,在same php.net page

插入值(命名参数)的阵列不需要前缀冒号als键值工作。

0

两种方式都是正确的,两个示例都运行正确。

你可以阅读有关,在手动(用户评论):http://www.php.net/manual/en/pdostatement.execute.php#71929

+0

你确认了吗? – Gtker 2010-04-20 14:00:28

+0

是的,但我更喜欢http://www.php.net/manual/en/pdostatement.bindparam.php @Macmade写了重要的答案,您应该阅读。 – 2010-04-20 14:15:29

+0

如果变量是用保留关键字命名的,你能详细说明那个错误吗? – Gtker 2010-04-20 14:30:04

2

都是有效的,我们鼓励您使用:关键符号,因为它可以防止一些错误,如果你命名一个变量有一个保留关键字,例如......

+0

你能详细说明错误吗? – Gtker 2010-04-20 15:01:39

+0

只是一个(非常)愚蠢的例子,所以你可以看到我的意思......; ) $ q = $ pdo-> prepare('SELECT * FROM table WHERE WHERE'); $ q-> execute(array('WHERE'=>'1')); – Macmade 2010-04-20 15:11:14

+1

他正在讨论带有参数名称和值的数组,而不是查询。 – binaryLV 2010-04-20 15:22:25

0

我用的是第二种方式,即

$query = 'insert into user (username, password) values (:username, :password)'; 
$param = array('username' => $username, 'password' => $password);

$ PARAM在这个例子中,有时可制成compact('username', 'password') - 似乎得心应手给我。

+0

我没有看到你的意思是'compact('username','password')' – Gtker 2010-04-20 14:10:41

+1

他正在谈论PHP的[compact](http://php.net/manual/en/function.compact.php)函数 – 2010-04-20 14:21:22

相关问题