2010-09-08 20 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