0

私のシステムには、説明できない奇妙な問題があるようです。データベースに接続してデータを読み取るために使用する次のコード スニップがあります。

define('DB','products');
define('HOST','localhost');
define('DBPASS','password');
define('DBUSER','root');
define('DBTABLE','product_tb');
$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_error($conn));

しかし、常に mysqli_connect と接続できないというエラーが報告されます。このコードを別のシステムで実行しようとすると、正常に動作します。ここでは、2 つの警告と接続失敗エラーを示します。

警告: mysqli_connect() [function.mysqli-connect]: (28000/1045): D:\xampp\htdocs\products.php の 7 行目で、ユーザー 'root'@'localhost' (使用するパスワード: NO) のアクセスが拒否されました

警告: mysqli_error() は、パラメーター 1 が mysqli であると想定します。7 行目の D:\xampp\htdocs\products.php で指定されたブール値です。接続できませんでした:

これは、システムをテストするときにパスワードが必要ない場合に発生するため、DBPASS を空白のままにしましたが、実際のシステムでこれを使用すると、DBPASS を省略したかどうかに関係なく、まったく同じエラーで失敗します... . キャッシュだと思ってmysqlとapacheを再起動したのですが、何も動きません。何かお役に立てることがありましたら、よろしくお願いいたします。

4

2 に答える 2

2

接続エラーを確認するには、mysqli_error() ではなく mysqli_connect_error() を使用する必要があります。

これにより、エラーメッセージの1つが解決されます.

$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_connect_error());

もう 1 つのエラー メッセージは、データベース サーバーの無効な権限が原因で発生します。データベースへのアクセスを停止します。@Dragonがコメントしたように、コマンドラインからユーザー名とパスワードの組み合わせでログインできますか。cmd ライン アクセスがない場合は、php myadmin または何か他のものを持っていますか。これにより、user/pass/db コンボをチェックして、それが機能することを確認できます。

また、@MarcB が言うように、すべてのデータベースへの root アクセスではなく、サーバー上の特定のデータベースにのみアクセスできるログインを使用することをお勧めします。そうすれば、コードがハッキングされた場合、(理論上) 1 つのデータベースにしかアクセスできなくなります。

于 2012-05-14T03:55:51.780 に答える
0

私は非常に長い苦労の末にこれを見つけました - それは実際に私のcPanel->ホーム-> MySQLデータベースにありました:

リモート MySQL ホスト

「mysql2000.my-virtual-panel.com」は MySQL サーバーのアドレスです。MySQL サーバーに接続するときは、このホストを指定する必要があります。

$host="mysql2000.my-virtual-panel.com";

それは役立つはずです。

于 2015-08-14T08:45:29.467 に答える