2016-07-29 3 views
0

一部のPHPスクリプトでデータベース接続を含める必要があります。だから私は最初に()を要求し、その後に私の質問を入れます。単一のスクリプトと見なされると、次のようになります。try {}の外にMySQLクエリを置くことは安全ですか

Try { 
$connect = new PDO("mysql:host={$DB_host};dbname={$DB_name}; charset=utf8mb4",$DB_user,$DB_pass); 
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

Catch(PDOException $e) { 
echo $e->getMessage(); 
} 
// Then I put the queries here 

これは機能しますが、私の質問は次のとおりです。これは安全ですか?ほとんどのチュートリアルでは、すべてのクエリを中括弧Try { }に入れています。そして、クエリをTry { }に入れて後に置くことの違いは何ですか?

答えて

1

何らかの理由でクエリが失敗した場合、クエリを実行していたコード行でプログラムがクラッシュします。何らかの理由で、これがあなたのコードで望むふるまいであれば、これを行うという正当性があるかもしれません。

エラー処理なしでは、エラーがスローされるたびにプログラムが停止します。したがって、try catch以外のクエリを特に必要としない限り(私は何のために推測できませんでした)、あなたは将来自分自身のためにトラブルを作成することになります。

0

クエリ中に例外が発生した場合(たとえば、引用符がないためにクエリを正しく実行できない場合)、エラーは検出されず、スクリプトの実行は停止します。

エラー処理は、通常可能な限り常に優先されます。データの取得、データの挿入、または単に誤字の入力に問題がある場合は、エラーが発生したことをユーザーに通知する方法が必要です(また、さらに調査するためにログに記録してください)。

+0

照明に関するコメント。今私は非常に間違っていたことを知っています。では、どのページにも接続スクリプトを入力せずに、クエリをtry catch内に置くにはどうすればよいですか?例: インクルード( 'connect.php'); $ sql = "SELECT * FROM users"; インクルードされたスクリプトに$ sqlを挿入するにはどうすればよいですか?私を許してください。私はまだPHP/MySQLの新機能です。ありがとう。 – Benny64

+0

'connect.php'には含めないでください。あなたのコードで(connect.phpの外側で)自分のtry/catchブロックを使い、それに応じて処理してください。 – FrankerZ

関連する問題