2011-10-18 10 views
0

何らかの理由で、このコードは1の代わりに2を返しますか?

やろうとして何イム
$allowedCount = 1; (This figure is set inside the database) 


$sql_count = mysql_query("SELECT usrid FROM mytable WHERE usrid=".$uid) or die(mysql_error()); 
$currentCount = mysql_num_rows($sql_count); 


$currentCount = 1; (In this example current count returns a 1) 



if ($currentCount <= $allowedCount) { 

// do this OK 

} else { 

// do this Not OK 

} 

は、ユーザーが自分の限界に達していればそうそして、彼らにさらにINSERTクエリなどを禁止している場合、チェックです....

これは単純なアプローチでしょうか?

+0

あなたの 'SELECT'で' COUNT(*) 'を使わないのはなぜですか? –

+0

どこから$ uidを取得するかによって、これは潜在的なSQLインジェクションの脆弱性の可能性があります。参照してください:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – DGM

答えて

0

dbを確認すると、重複したレコードがある可能性があります。フォームを使用してデータを挿入すると、ページの更新時にデータが再挿入されている可能性があります。 dbに重複がないかチェックしてください。

+0

@ジャレッド、私はそれを試みますが、私は私の問題は、私は1 < = 1これを許します。つまり、もう一度やり直すことができます。 – jonnypixel

+0

@DGM簡単にするために、投稿したコードは削除されました。私は間違いなくエスケープしており、また、変更できないグローバルIDからusr idを取得しています。 – jonnypixel

+0

私はそれを考えましたが、別のモニタでphpmyadminを開いて、1つのエントリしかないことを確認しました。 – jonnypixel

関連する問題