Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查数据库中是否存在$\u GET变量_Php_For Loop - Fatal编程技术网

Php 如何检查数据库中是否存在$\u GET变量

Php 如何检查数据库中是否存在$\u GET变量,php,for-loop,Php,For Loop,如何检查数据库中是否存在未打印错误的$\u 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

如何检查数据库中是否存在未打印错误的$\u 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';
    }
}

它打印的错误太多,或者else条件始终为真。帮帮我。

首先必须检查get变量是否实际存在。如果PHP isset函数存在,您可以使用它来执行此操作。您可以继续查看它是否与您现在所做的站点标题匹配。

直接将任何PHP数组变量抛出到查询中是不安全的。你需要清理它。考虑使用MySQL LIALL逃逸字符串。虽然我建议改成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
     }
?>

请尝试下面的代码,并通知我,如果您将面临任何错误

<?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';
    }
}
?>

对你有用的链接;另外,我建议改为使用PDO,它更可读,更容易处理。与Python不同,PHP中没有for/else循环。在循环之前,您需要检查行的数量,如果没有行,则会出错。打印$\u GET['website']变量以查看它的值。另外,$row\u count值可能有太多行,如果代码连续打印太多“错误”,则只有1为真。在这段代码中,else条件始终为true。我已经解决了这个问题::我们应该在循环外保持else条件或not equal条件。这样它就可以完美地工作。如果我们在循环中保持not equal或else条件,它会打印很多次。@user617126我刚刚写了一个用于比较变量的If条件。在if条件下我也有临时变量。我不知道你的代码中有哪些变量。您应该在if条件下使用正确的变量,这样它就可以正常工作。