2010-04-20 27 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

相關問題