2017-11-09 7 views
-1

は、以下の私のコードは、私は$ _GET [「song_genreは」]バングラに等しいか、ヒンディー語、または、英語でない場合、条件が真であることができるかどうか、この知りたい...song_genreの値を使って条件を操作できる場合はこれを行いますか?ここ

$song_genre = $_GET['song_genre']; 
if($song_genre=='bangla'||$song_genre=='hindi'||$song_genre=='english'){ 
    $query = "SELECT `id` FROM `table` WHERE `song_genre` = '$song_genre'"; 
    mysqli_query($db_connection, $query); 
} 
+1

のためのより良いチェックの適切な質問を投稿してください。 –

+0

はいできます。しかし、ここであなたがしたいものを具体的にしてください。 – BRjava

+1

私は、 'in_array($ song_genre、['bangla'、 'hindi'、 'english'])){...}'と言っていますが、私は怠惰なプログラマーです。 。 – ArtisticPhoenix

答えて

0

です。あなたがtype juggleので、0が真となりますloose comparison (==) instead of strict comparison (===)値を使用しているので

$_GETで何かが常に文字列または配列になりますので、

var_dump(0 == "bangla"); // bool(true) 

しかし、実用的な方法があってはなりません3つの文字列以外でif節をtrueに評価するようにします。それにもかかわらず、厳密な比較を使用してください。サイドノートでは

please use prepared statements to guard against sql injection.

+0

ゼロが任意の文字列値と等しい理由 –

+0

@Ranganあなたが緩やかな比較を使用しており、その値がジャグルと入力するためです。あなたには不明な点がある場合は、このコンセプトを理解するために、私の答えの中の提供されたリンクに従ってください。 – Gordon

0

文が壊れなる場合$ _GET [ 'song_genre']は0(intvalue)本となった場合。

$song_genre = 0 ; // will break the statement 

if(!empty($song_genre)){ 
//your code 
} 
関連する問題