これは私が思うにランダムな質問であり、それはスタイルと組織ともっと関係があります。PDOを使用してMySQLデータベースに接続するWebアプリケーションがあり、一部のスクリプトでは、同じテーブルに必ずしも関係しないクエリが次々に発生します。つまり、あるものでSELECTステートメントを実行し、次にいくつかの値に応じて別のステートメントを更新し、最後に別のステートメントからDELETEします。
私は最近PHPとMySQLを学びましたが、確信が持てず、注意して問題を簡単に見つけたいと思っていたためです(そして、均一性やコーディングスタイルなどの愚かなことについては少し強迫的で肛門的であるため)私が使用したすべてのクエリは次の形式です
try {
$statement = "
UPDATE/SELECT ...
FROM/SET ...
WHERE ...";
$query = $dbcnx->prepare($statement);
$flag = $query->execute();
}
catch (PDOException $e) {
$errorMsg = "...";
error_log($errorMsg,3,'../../xxx.log');
$response = ...;
$dbcnx->null;
return $response;
}
$result = $query->fetch/fetchAll/fetcColumn...
そのため、問題が発生する場所(try / catch)を見つけ、インジェクションや無効な文字に対して安全である(prepare)ことができました(個人的なチェックをいくつか行いましたが、特別に作成された関数の方が優れていると確信しています)。
1つまたは2つのクエリがあった場合は問題ありませんでしたが、コードが大きくなると、アクションや実体がほとんどないため、コードが少し多すぎました(1つのクエリで16行など)。
だから私はいくつかのアドバイスをお願いします。コードをより管理しやすくするにはどうすればよいですか?構造に関する私の論理(私がそれを書いた方法)にいくつかの根本的な誤りがありますか?try / catchを使用するためのルールはありますか?それは開発とデバッグのためのものであり、後でそれのいくつかのブロックを削除することができますか?
このコードブロックだけの関数を作成し、ステートメントをパラメーターとして使用して呼び出すことを考えていました。したがって、本体にクエリを「入力」してから、関数を呼び出して、クエリを準備、実行し、結果を返します。もちろん、私は常にfetchAllを使用し、連想配列を返しますが、データセットが小さい限り、メモリ使用量は問題ないと思います(いずれにせよ、最近のシステムでは、違いに気付くのにかなりの時間がかかるはずです)。 ..
どんな考えでも大歓迎です。
これは実際にはコードや設定、s / wやプログラムの問題ではないことを理解していますが、それでも精神に従っていることを願っています。