2011-11-16 8 views
1

以前は動作していたログインスクリプトがありましたが、以前は動作していたものもあります。SQLはphpMyAdminで動作しますが、Webページスクリプトの行数が正しくありません

SQLは常にphpMyAdminで動作しますが、一部のユーザーのWebページでは常にゼロの行が返されます。

$query_str = 'SELECT id, username, level_access, active FROM users WHERE username = "'; 
$query_str .= mysql_real_escape_string($uname).'"'; 
$query_str .= ' AND password = "'.mysql_real_escape_string($pwd).'"'; 
echo $query_str. "<br/>"; 

$result = mysql_query($query_str); 
$num_result = mysql_num_rows($result); 
echo $num_result. "<br/>"; 

私は任意のバリエーションをテストし、かなりの時間を費やして、私は考えることができ組み合わせは、私は引用符を再び追加、変数名を変更し、他の変数を挿入し、式を簡素化:ここに問題があるコードがあります。それぞれの変更はphpMyAdminで出力されたクエリ文をテストしました。他のユーザーを追加し、ユーザーを削除して再作成しました。アクセスレベルとユーザー名を変更しました。

常に私は同じ結果を得た、一部のユーザーのログインは、常に私は、次のSQLを作成したように、最後に私はどこ文を削除彼らはphpMyAdminの

で返されていても、それは常に行を戻さない他人のために働きますステートメント:

私のWebページでは、これは何人のユーザーがいても、常に8行を返します。ユーザーが8人、9人、または10人の場合、8行が返されます。私は8人以下のユーザーがいるようにユーザーを削除しましたが、WebページのphpMyAdminに8行も戻ってきましたが、毎回正しい番号が返されます。

明らかに問題はコードではないようです。これは私の専門知識を超えています。この問題の原因は何か、どのように解決すればよいのでしょうか?

+1

あなたのPHPコードとphpmyadminは同じデータベースを参照していますか? –

+0

データは正しいですか?場合によっては、1つの値が誤っているような微妙なものは、結果全体を投げ捨てることがあります。また、PhpMyAdmin _や_ MySQL Work BenchなどのさまざまなDBツールを使用してみてください。 –

答えて

0

あなたのMySQLのキャッシュ設定は何ですか?データベースにその値よりも少ない値があるときに8行をリトラクトすると、クエリの古い結果がキャッシュされるように聞こえます。 SELECTステートメントの後にSQL_NO_CACHEを追加することによってキャッシュを無効にすることができます。したがって、クエリを$query_str = 'SELECT SQL_NO_CACHE id, username, level_access, active FROM users';に変更するとヘルプが変わりますか?

+0

キャッシュの設定についてはわかりませんが、あなたの提案を試してもまだ8行を取得しています。 – user1047397

+0

うーん.... http://stackoverflow.com/questions/181894/mysql-force-not-to-use-cache-for-testing-speed-of-queryでキャッシュを回すことに関する他の提案がありますが、あなたはそこで働く何かを見つけるかもしれません。 – mikel

+0

私は行を印刷しようとしなかったので、何かを教えてくれるはずです。私は今それをやっている。 – user1047397

0

明示的に照会されているデータベースに接続しましたか?

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
mysql_select_db ('myDatabase' , $link); 

次に、クエリで$linkハンドルを使用する必要があります。

$result = mysql_query($query_str, $link); 
+0

はいデータベースに接続しています。しかし、私はちょうどこのクエリのためにWRONGデータベースに接続していることを発見しました。不思議なことは、間違ったデータベースに接続しているこのクエリと、接続を行っているのと同じコード行(つまり、同じコード行ではない)だけです。 – user1047397

+0

実際、私は質問に$リンクを使用していませんでした。私は問題を引き起こしているものに追加して、「有効なMySQL-Linkリソースではありません」というエラーが表示されます。これは、ウェブサイト全体の他のすべてのクエリが正しく機能しているにもかかわらずです。 – user1047397

+0

@ user1047397非常に奇妙な... localhostをデータベースの場所に置き換えましたか(そして、デフォルトのポートにもポート番号もない場合)。mysql_userは有効なユーザーで、mysql_passwordはユーザーのパスワードです。 –

関連する問題