2

私はこれで髪を引き裂いているので、このサイトに行きます。

PHPスクリプトがあります。非常に一般的な mysql_connect (永続的な接続を確立する) を使用して、スクリプトが存在する同じサーバー上の MySQL データベースにアクセスし、結果を変数 $user_con に割り当てようとしています。

$user_con = mysql_connect([servername], [username], [password], TRUE);
//And no, that's not what's actually in the code, but I'm not going to give those
details up. :)

しかし、何らかの理由で、実際にそこからデータを取得しようとする試みはすべて失敗します...エラーは発生しません。mysql_error() は、接続試行の直後と mysql_select_db() を使用した後の両方で、何も出力しません。$user_con をエコーし​​ても何も出力されないにもかかわらず、if ステートメントは $user_con を空ではないものとして扱います (mysql_connect が失敗した場合、empty() を使用して空と見なされる FALSE を出力します)。スクリプト自体はクラッシュせず、残りの HTML と他の SQL 接続からのデータを正常に出力します。

なんらかの理由で、スクリプトは接続が機能していないことだけに気づきます。データをフェッチしようとすると、接続が存在するかどうかを確認し、最終的には存在しないように動作するため、次の if ブロックで示されるように、再接続を試みて失敗しますデータベースからデータを取得できない場合、別のデータを出力する場所があります。

if(empty($user_con))
{
     $check = mysql_ping($user_con);
     if(!$check)
     {
           $user_con = mysql_connect([servername], [username], [password], TRUE);
           if(!empty($user_con))
           {
               mysql_select_db("user_db", $user_con); 
           }
     }
 }

 if(empty($user_con))
 {
     $output .= "<br /><span class=\"comuser\">Posted by: User #" . $userid . "</span></p>";
     //Where $userid is outputted instead of the username I want to get from the database USING the userid
 }

また、このコード内の任意の場所で mysql_error() 呼び出しをエコーし​​ても何も出力されないことにも注意してください。これは明らかに簡単すぎるためです。

現在のページでは、ここに見られるように、スクリプトがユーザー名ではなくユーザー ID を出力するだけであるという事実を除いて、すべて正常に動作します。

この接続が機能しない理由がわかりません...他のスクリプトでこの問題を修正するために上司が書いたコードを使用しても、ここでは機能しません(実際、実際には素晴らしいクラッシュが発生します)代わりは)!

4

1 に答える 1