2017-02-01 2 views
0

エラーを出力しない場合、$ _GET変数がデータベースに存在するかどうかをチェックする方法。 私はこのコードを使用しています:

$connection = mysqli_connect("localhost" , "root" , "" , "test"); 
$query = "SELECT site_title FROM websites"; 
$select_all_sites = mysqli_query($connection,$query); 
$row_count = mysqli_num_rows($select_all_sites); 

for ($i=0; $i < $row_count; $i++){ 
    $row = mysqli_fetch_assoc($select_all_sites); 
    if($_GET['website'] == $row['site_title']){ 
     echo 'Success'; 
    }else{ 
     echo 'error'; 
    } 
} 

それはあまりにも多くのエラーを印刷したり、私を助けて(他の条件が常に真です。)。

+1

便利なリンクです。 [PHPでSQLインジェクションを防止するにはどうすればいいですか?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1) – Tom

+3

また、代わりにPDOを使用すると、読みやすく扱いやすくなります – Stoffo

+0

Pythonとは異なり、for/elseループはPHPではありません。ループする前の行の量を調べ、必要がない場合はエラーを調べる必要があります。 – Tom

答えて

-2

まずget変数が実際に存在するかどうかをチェックする必要があります。 PHPのisset関数http://php.net/manual/en/function.isset.phpが存在する場合はこれを行うことができます。これは、今のようにサイトのタイトルに一致するかどうかを確認することができます。

0

php配列変数を直接クエリーに投げるのは安全ではありません。あなたはそれをきれいにする必要があります。 mysqli_real_escape_stringの使用を検討してください。私はPDOに切り替えることを提案しますが。

なぜ、forループの代わりにwhileループを使用できないのですか?変数ウェブサイトが実際に存在するかどうかを確認する必要があります。 phpのisset関数が役に立ちます。お試しください:

<?php 
if(isset($_GET['website'])){ 
    if($_GET['website'] == $row['site_title']){ 
#awesome! it matches 
    } else{ 
    #it does not match 
    } 
} else{ 
#website $_GET variable does not exist. Handle error 
    } 
?> 
-1

エラーが発生した場合は、以下のコードを試してください。

<?php 
$connection = mysqli_connect("localhost" , "root" , "" , "test"); 
$query = "SELECT site_title FROM websites"; 
$select_all_sites = mysqli_query($connection,$query); 

while($row = mysqli_fetch_assoc($select_all_sites)) 
{ 
    if($_GET['website'] == $row['site_title']) 
    { 
     echo 'Success'; 
    } 
    else 
    { 
     echo 'error'; 
    } 
} 
?> 
+0

の場合は1だけが真です。このコードでは、else条件は常にtrueです。 – user617126

+0

私は問題を解決しました:) :)私たちはelse条件を保持するか、loop.thenより完璧に機能します。 ループ内で等しくないか、または条件が満たされない場合は、その時間の多くを出力します。 – user617126

+0

@ user617126変数を比較するためのif条件を書くだけです。また、if条件に一時変数があります。私は変数があなたのコードを投げたのか分からない。あなたはif条件で正しい変数を使うべきです、それはうまくいきます。 –

関連する問題