2013-05-08 132 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)); 

至少你的查询适合屏幕。