PHP SQL-按国家排序

PHP SQL-按国家排序,php,mysql,sorting,if-statement,country,Php,Mysql,Sorting,If Statement,Country,所以,我在做一个学校项目时遇到了一些问题。我有一份参加烹饪比赛的名单。有4名选手来自5个不同的国家,我希望能够按照他们的国家对选手进行排序,或者如果没有国家入选,则显示所有选手 我使用了if/else语句,使用的是$\u GET,但效果有限 if(isset($_GET['country'])){ $sqlCountry = "SELECT * FROM countries WHERE country_name = ".$_GET['country']; }else{ $sq

所以,我在做一个学校项目时遇到了一些问题。我有一份参加烹饪比赛的名单。有4名选手来自5个不同的国家,我希望能够按照他们的国家对选手进行排序,或者如果没有国家入选,则显示所有选手

我使用了
if/else
语句,使用的是
$\u GET
,但效果有限

if(isset($_GET['country'])){
     $sqlCountry = "SELECT * FROM countries WHERE country_name = ".$_GET['country'];
}else{
     $sqlCountry = "SELECT * FROM countires";
}
$queryCountry = mysqli_query($db,$sqlCountry );
$count = 1;

while($resCountry=mysqli_fetch_array($queryCountry )){
    if(isset($_GET['land'])){
        $country= $_GET['country'];
    }else{
        $country= $resCountry['country_navn'];
    }

$sql_Cont = "SELECT * FROM contestants WHERE cont_country='$country'";
$query_Cont = mysqli_query($db,$sql_Cont );

echo    '<div class="mod12 mod_gen no-margin">
            <h2>'.$resCountry['land_navn'].'</h2>';
            while($res_Cont=mysqli_fetch_array($query_Cont )){
                $count++;
                if($count % 2){
                    $right = '';
                }else{
                    $right = 'right';
                }
                echo    '<div class="mod6 mod_gen '.$right.'">
                            <div class="venstre">
                                <img src="images/placeholder.jpg">
                            </div>
                            <div class="hoejre">
                                <h3>'.$res_Cont['cont_name'].'</h3>
                                <h5>'.$res_Cont['cont_workplace'].' - '.$res_Cont['del_home_city'].'</h5>
                                <br>
                                <p>Speciality: '.$res_Cont['cont_speciality'].'<br><br>
                                '.nl2br($res_Cont['cont_text']).'</p>
                            </div>
                        </div>';
            }
echo    '</div>';
if(isset($\u GET['country'])){
$sqlCountry=“从country_name=“.$\u GET['country]”所在的国家/地区选择*;
}否则{
$sqlCountry=“从countires中选择*”;
}
$queryCountry=mysqli_query($db,$sqlCountry);
$count=1;
while($resCountry=mysqli\u fetch\u数组($queryCountry)){
如果(isset($_GET['land'])){
$country=$_GET['country'];
}否则{
$country=$resCountry['country_navn'];
}
$sql_Cont=“从参赛者中选择*,其中Cont_country='$country';
$query\u Cont=mysqli\u query($db,$sql\u Cont);
回声'
“.$resCountry['land_navn']”;
而($res\u Cont=mysqli\u fetch\u数组($query\u Cont)){
$count++;
如果($count%2){
$right='';
}否则{
$right='right';
}
回声'
“.$res_Cont['Cont_name']”
“.$res_Cont['Cont_workplace'].-”.$res_Cont['del_home_city'.]

专业:'.$res_Cont['Cont_Speciality'].

“.nl2br($res_Cont['Cont_text'])”

'; } 回声';
一切都正常,直到我点击其中一个链接,在URL中找到国家名称:
index.php?page=2&country=demank
。然后我会给我一个
fetch\u数组
期望参数为1,布尔给定错误

在我看来,这应该行得通

谢谢你的帮助。 顺致敬意,
~Barakna

根据你的问题,你的错误是

一切正常…fetch_数组期望参数为1

您必须更改您的查询。而不是您的查询

$sqlCountry = "SELECT * FROM countries WHERE country_name = ".$_GET['country'];
您的查询变量位于引号中,表名和字段名位于反勾号中。还可以使用
mysqli\u real\u escape\u string
防止sql注入

$country = mysqli_real_escape_string($db, $_GET['country']);

$sqlCountry = "SELECT * FROM `countries` WHERE `country_name` ='".$country."'";

mysqli_query-失败时返回FALSE。因此,它表示找不到任何内容,并且未经验证就向mysql_fetch_数组()传递FALSE。此外,你在代码中有一大堆sql注入。阅读:这与问题无关,伙计。问题是为什么它不起作用,而不是用户输入验证。好吧,不管怎样,谢谢你的回答。它解决了我的问题。竖起大拇指,朋友们,我该怎么做?很抱歉,第一次在这里发布。你看到左边的write mark了吗我的答案。只需点击它并使其绿色书写,ark@BaraknaObama欢迎!!享受