9

次のようなデータベースエラーが発生することがあります

警告:mysql_connect()[function.mysql-connect]:ユーザー'test' @ '101.190.193.83'のアクセスが拒否されました(パスワードを使用:YES)

接続できませんでした:ユーザー'test' @ '101.190.193.83'のアクセスが拒否されました(パスワードを使用:YES) "

しかし、実際にはパスワードに変更はありません。

このエラーをログファイルに記録し、「サーバーエラー。しばらくしてからもう一度お試しください」などのメッセージを画面に表示する方法はありますか。

4

5 に答える 5

10

PHP に警告を表示させたくない場合は、「@」演算子を使用する必要があります。

$connect = @mysql_connect(HOST, USER, PASS);//won't display the warning if any.
if (!$connect) { echo 'Server error. Please try again sometime. CON'; }

本番環境のファイルで display_errorsを 0 に設定することも検討してください。php.ini

また、MySQL への接続にPDOを検討することもできます。これは、デフォルトで例外を使用してエラーを報告します。

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Could not connect : ' . $e->getMessage();
}
于 2011-05-25T08:05:11.310 に答える
3
<?php
    $connect = mysql_connect(HOST, USER, PASS);
    if(!$connect) { echo 'Server error. Please try again sometime. CON'; }

    $select_db = mysql_select_db(DATABASE);
    if(!$select_db) { echo 'Server error. Please try again sometime. DB'; }
?>
于 2011-05-25T06:51:21.403 に答える
3

これらのエラーをログ ファイルに記録する方法はありますか?

はい。PHP のエラーと警告はすべて Web サーバーのエラー ログ ファイルに書き込まれるため、他に何もする必要はありません。既に実行されています。

質問の 2 番目の部分に答えるために、生のエラー メッセージを画面に表示したくない場合は、次の 2 つの方法のいずれかでこれを防ぐことができます。

  1. 関数呼び出しの前にシンボルを使用し@ます。つまり$db = @mysql_connect(...);. これにより、その特定の関数呼び出しについてのみエラー報告がオフになります。一般に、この手法を過度に使用することは悪い考えであると考えられていますが、時折行うのは正当なことです。

  2. PHP.iniより良いオプションは、ローカル.htaccessファイル、またはini_set()プログラム内で使用して、グローバル エラー報告フラグをオフにすることです。

通常、Web ページのエラー レポートは、サイトの開発中にのみ使用する必要があります。サイトが公開されたら、エラー レポートを有効にする必要があります。これにより、慎重に構築されたページ レイアウトのランダムな場所に PHP エラーが表示されることがなくなります。発生したエラーは引き続きサーバー エラー ログに書き込まれますが、ページには表示されません。

取得したような MySQL エラーの場合、関数を使用して、プログラム内でエラー自体を取得できますmysql_error()。これには、最後に発生したエラーの詳細が含まれるため、プログラムでチェックして適切なエラー メッセージを報告できます。

于 2011-05-25T08:19:49.540 に答える
1

ソース: http://wallstreetdeveloper.com/php-database-connection/

以下は、php でのデータベース接続のサンプル コードです。

<?php
//Step-1 : Create a database connection
$connection=mysql_connect(“localhost”,”root”,”root”);
if(!$connection) {
    die(“Database Connection error” . mysql_error());
}
//Step-2 : Select a database to use
$db=mysql_select_db(“widget_corp”,$connection);
if(!$db) {
    die(“Database Selection error” . mysql_error());
}
?>
<html>
<head>
<title>Database</title>
</head>
<body>
<?php
 //Step 3 : Perform database Queury
 $result=mysql_query(“select * from subjects”,$connection);
if(!$result) {
    die(“No rows Fetch” . mysql_error());
}

//Step 4 : Use returned data
while($row=mysql_fetch_array($result))
{
     //echo $row[1].” “.$row[2].”&lt;br>”;
    echo $row["menu_name"].” “.$row["position"].”&lt;br>”;
}

?>
</body>
</html>
<?php
//Step 5 : Close Connection
mysql_close($connection);
?>
于 2014-05-07T17:36:04.893 に答える
0
try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);// if your are not set this attributes you won't get any exceptions.
} catch (PDOException $e) {
    echo 'Server error. Please try again some time.';
}
于 2014-04-18T05:08:18.623 に答える