我無法決定什麼是我的web應用程序的最佳解決方案,它正在訪問(主要是讀取)許多次每個會話上的相同用戶數據。mysql pdo交易和會話存儲
我應該一次檢索所有用戶數據(大約40個字段)到$ _SESSION打開一個新的會話,或者我應該保持一個持久的PDO(mysql)連接並查詢每個腳本執行所需的數據庫參數代替?
ALSO:
會不會有介於兩者之間的性能有很大的區別讀/更新在很多領域的一次(蒙山自定義查詢)或一個接一個(與通用查詢的自定義組合)同一筆交易?例如
$dbh = new PDO("mysql:host=localhost;dbname",$dbuser,$dbpass,array(PDO::ATTR_PERSISTENT => true));
$fieldlist='';
foreach ($fields as $i=>$field){
$fieldlist.=$field['name'].':field'.$i.',';
}
rtrim($fieldlist,',');
$dbh->prepare("UPDATE user SET ".$fieldlist." WHERE name=:name");
foreach ($fields as $i=>$field){
$stmt->bindValue(':field'.$i, $field['value'], PDO::PARAM_STR);
}
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
$dbh = null;
與
$dbh = new PDO("mysql:host=localhost;dbname",$dbuser,$dbpass,array(PDO::ATTR_PERSISTENT => true));
$dbh->beginTransaction();
foreach($fields as $field){
$stmt=$dbh->prepare("UPDATE user SET ".$field['name']."=:field WHERE name=:name");
$stmt->bindValue(':field', $field['value'], PDO::PARAM_STR);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
}
$dbh->commit();
$dbh = null;
您不能序列化數據庫連接資源到會話中。我會說這個辯論已經結束。 – deceze