Ich habe Probleme zu entscheiden, was wäre die optimale Lösung für meine Web-App, die Zugriff auf (hauptsächlich Lesen) viele Male die gleichen Benutzerdaten in jeder Sitzung.mysql pdo transaction und session storage
Sollte ich beim Öffnen einer neuen Sitzung alle Benutzerdaten (etwa 40 Felder) gleichzeitig auf $ _SESSION abrufen oder sollte ich eine persistente PDO (mysql) Verbindung beibehalten und bei jeder Skriptausführung nur die benötigten Parameter aus der Datenbank abfragen stattdessen?
AUCH:
Gäbe es einen großen Unterschied in der Leistung zwischen dem Lesen sein/viele Felder auf einmal zu aktualisieren (whith eine benutzerdefinierte Abfrage) oder nacheinander (mit einer benutzerdefinierten Kombination allgemeiner Abfragen) in die gleiche Transaktion? z.B.
$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;
gegen
$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;
Sie können eine Datenbankverbindungsressource nicht in eine Sitzung serialisieren. Ich würde sagen, dass diese Debatte beigelegt ist. – deceze