さて、私は今最も奇妙な問題を抱えています。私のコードは大丈夫です!MySQL を使用するたびに、解決策を見つけることができない無限の問題が発生するため、これは私にとって大きなショックです。
しかし、今日、すべてが完璧に機能しています。だから問題は何ですか?問題は、コードを関数でラップしようとすると、ただ... 動作しなくなることです! すべてのステップの後にエラーチェックがあり、独自のファイルと行にある場合は正常に機能します。ただし、パラメーターを追加できるように関数に入れる必要があり(したがって、「extraQuery」変数)、別のファイルからアクセスできるように「返す」必要があります。
ここに私の基本コードがあります:
$link = mysql_connect($db_host, $db_user, $db_pass) or die ("Unable to connect: " . mysql_error());
mysql_select_db($db_name, $link) or die("Couldn't connect to database: " . mysql_error());
$extraQuery = "";
$result = mysql_query("SELECT * FROM things " . $extraQuery . " ORDER BY RAND() LIMIT 1", $link);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
echo($row['content']);
私が言ったように、それはそのままで完全にうまく機能します。でも、こうすると……。
function getResult(){
$link = mysql_connect($db_host, $db_user, $db_pass) or die ("Unable to connect: " . mysql_error());
mysql_select_db($db_name, $link) or die("Couldn't connect to database: " . mysql_error());
$extraQuery = "";
$result = mysql_query("SELECT * FROM things " . $extraQuery . " ORDER BY RAND() LIMIT 1", $link);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
echo($row['content']);
}
getResult();
..2行目で動作を停止し、「データベースが選択されていません」と表示されます。しかし、ご覧のとおり、存在するデータベースを明示的に選択しており、それ以外の場合は関数内にない場合に機能します。これを強調するために、それは私のユーザー権限ではなく、データベースの名前でもありません。関数の外では完全に機能するためです。
可能な限りの援助をいただければ幸いです。