如何检查数据库中是否存在$ _GET变量

时间:2017-02-01 10:58:04

标签: php for-loop

如果没有打印错误,如何检查数据库中是否存在$ _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';
    }
}

它打印太多错误或(其他条件始终如此。)帮助我。

3 个答案:

答案 0 :(得分:0)

将任何php数组变量直接抛出到查询中是不安全的。你需要清理它。考虑使用mysqli_real_escape_string。虽然我建议改用PDO。

回到你的问题,为什么你不能使用while循环而不是for循环。您需要检查变量网站是否确实存在。 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 :(得分:-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';
    }
}
?>

答案 2 :(得分:-2)

首先必须检查get变量是否实际存在。您可以使用PHP isset函数http://php.net/manual/en/function.isset.php执行此操作(如果存在),您可以继续查看它是否与您现在所做的网站标题匹配。