10

PHP を使用してデータベースに接続するのに問題はありませんが、テストしたいくつかのスクリプトでは、接続コマンドに小さな違いが見られました。

@mysql_connectとはどう違いmysql_connectますか?

@自分のスクリプトを書くときにシンボルを使用したことがないので、それが目的を果たしているかどうか疑問に思っていました.

前もって感謝します

4

5 に答える 5

16

関数の前の@記号は、それを無音にします。つまり、実行に失敗した場合でも、エラー メッセージは表示されません。だから私は提案します:それを使用しないでください

さらに、@AlexanderLarikov が言ったように、mysql_*もう使用しないでください。コミュニティはその機能を減価償却し始めました。

于 2012-07-31T14:51:09.083 に答える
2

/エラー制御演算子です。エラーを抑制するだけです。

コードでは省略することをお勧めします。

ドキュメントから:

現在、"@" エラー制御演算子プレフィックスは、スクリプトの実行を終了させる重大なエラーのエラー レポートを無効にします。とりわけ、これは、「@」を使用して特定の関数からのエラーを抑制し、それが利用できないか、タイプミスされている場合、スクリプトは理由を示さずにその場で停止することを意味します。

于 2012-07-31T14:51:54.973 に答える
1

これはエラー抑制メカニズムです。たとえば、接続しようとしたときにエラーが発生したとします。PHP はエラーを表示/ログに記録するのではなく、黙って無視します (設定によって異なります)。

個人的には、これを使用するのは悪い習慣だと思います。私の意見では、エラーを黙って破棄するのではなく、エラーを処理するコードを作成する必要があるからです。

于 2012-07-31T14:52:05.720 に答える
0

このようなオプションを使用しない場合;

if ("私は自分の srv でテストを行っているところです") {
   error_reporting(E_ALL);
} そうしないと {
   error_reporting (0);
}

次に、この状況に推奨できます。

$conn = @mysql_connect(...);
if ($conn === false) {
   // エラー処理
}

または;

@mysql_connect(...) または die("... に接続できませんでした");

その@ため、「抑制可能な機能が使用されている」行に存在する場合、エラーを抑制します。

// 抑制可能? @はい、これらが構造関数である場合、die, exit, eval... 関数には適用できません。

于 2012-08-06T13:28:53.183 に答える
0

@ は警告を抑制しますhttp://php.net/manual/en/language.operators.errorcontrol.php賢明に使用してください

于 2012-07-31T14:52:46.547 に答える