私はこれで髪を引き裂いているので、このサイトに行きます。
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 を出力するだけであるという事実を除いて、すべて正常に動作します。
この接続が機能しない理由がわかりません...他のスクリプトでこの問題を修正するために上司が書いたコードを使用しても、ここでは機能しません(実際、実際には素晴らしいクラッシュが発生します)代わりは)!