2013-05-08 125 views
-1
$query = 'INSERT INTO user_answer (facebook_id, answer_id) VALUES (' . $i . ',' . $randAnswer . ')'; 
$dbh->exec($query); 

我有這段代碼,現在需要使用PDO :: bindValue()和可能的PDO :: prepare()將它變成一個準備好的語句。看看這些例子,我不知道該怎麼做。 :名稱來自哪裏,爲什麼要將它放入bindValue部分?PHP/MySQL聲明。我如何將其轉化爲準備好的聲明?

+0

http://php.net/manual/pt_BR/pdo.prepared-statements.php – 2013-05-08 18:17:22

+0

我有種想要一個「解釋就像我五」吧,不是一個鏈接。 – 2013-05-08 18:18:49

+0

:name是你自己的變量名稱。如:U可以使用:名稱烏爾SQL查詢,然後在bindValue( ':名',$ I,PDO :: PARAM_INT); – dee 2013-05-08 18:29:33

回答

1

在你的情況下,它會是這個樣子:

$st = $dbh->prepare("INSERT INTO user_answer (facebook_id, answer_id) VALUES (:facebook_id, :answer_id)"); 

$st->execute(array('facebook_id' => $i, 'answer_id' => $randAnswer)); 

您可能需要閱讀a tutorial或兩個進行了解如何有效地使用PDO。 PDO documentation也不錯。

這裏的一般想法是放入名稱值爲:name的東西,然後傳入一個數組,該數組定義name所映射的內容。

+0

爲什麼我要執行它作爲一個數組? – 2013-05-08 18:35:18

+0

這就是你如何綁定。常規的'?'樣式佔位符仍然需要一個數組,但不需要標籤。 – tadman 2013-05-08 18:54:03

0

它看起來更好的方式沒有無用的標籤

$query = 'INSERT INTO user_answer (facebook_id, answer_id) VALUES (?,?)'; 
$stmt = $dbh->prepare($query); 
$stmt->execute(array($i,$randAnswer)); 

至少你的查詢適合屏幕。