これは私が DB にアクセスするために使用する関数です。理論的には do while ループで 10 ~ 20 回まで使用できますが、現在はループを削除したため、一度に 1 つの db クエリしか実行できません。これをさらに最適化できますか、それともトランザクションとコミットが適切に行われる方法ですか? また、 $db->rollBack() が実際に何をするのかわかりません。スタックオーバーフローで見ただけです
<?php
function util_db_access($statement, $array) {
$db = new PDO('mysql:host=localhost;dbname=db;charset=UTF8', 'user', 'pass');
try {
//echo "1";
$db->beginTransaction();
//echo "2";
$stmt = $db->prepare($statement);
//echo "3";
if($stmt->execute($array)) {
$db->commit();
//echo "4";
if($rows = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
//echo "5";
if($stmt->rowCount() < 2) {
$rows = $rows[0];
}
return $rows;
} else {
//echo "6.1";
//$db->commit();
return true;
}
} else {
//echo "6.2";
//$db->commit();
return false;
}
} catch(PDOException $e) {
$db->rollBack();
//log, we are gonna keep a log eventually.. right?
return -1;
}
}
?>