2010-09-08 37 views
1

我的情况的一个例子是应用了大量设置页面,我使用的方法是,例如:PHP/PDO:在一页上写很多查询的风格?

//query 1 
$stmt = $dbh->prepare("..."); 
$stmt->execute(); 

//query 2 
$stmt = $dbh->prepare("..."); 
$stmt->execute(); 

这将是多写查询的接受的方法?我不知道它应该如何完成(或者是谁做了什么,而是),我认为编写第二个$stmt是最可接受的方式,因为不需要创建其他变量,对吗?

我真的很想知道人们是如何做这种事情的。如果必须的话,我不想发布'丑陋'的代码。

回答

3

是的,这是完全可以接受的方式来执行查询。无需创建新的$stmt对象。

此外,如果你有机会错误Lost connection to MySQL server during query单页内执行多个查询时,总是与查询发出这样的:这将告诉MySQL驱动程序使用MySQL API的缓冲版本。

PDO::setAttribute("PDO::MYSQL_ATTR_USE_BUFFERED_QUERY", true); 

使您的查询看起来像:

$db->prepare('select * from tablename', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); 
$db->execute(); 
+0

所以我不需要准备它(仅在结束时)后执行()每个查询?我不是100%确定你的意思,因为我需要检查查询是否在每次执行后返回行。 – John 2010-09-08 11:28:13

+0

不,你一定需要在处理后执行()查询。否则他们不会被执行。我所说的是,如果你遇到'丢失连接'错误,那么你可以使用'PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY'。我已经更新了答案以消除混淆。他们的方式,你目前正在做的很好。 – shamittomar 2010-09-08 11:37:31

+0

好的,谢谢。我对我的应用程序很有信心,它非常好! – John 2010-09-08 12:05:41