PHP SQL - 按国家排序
PHP SQL - Sort by country
所以,我在处理一个学校项目时遇到了一些问题。我有一份烹饪比赛的参与者名单。有 4 个来自 5 个不同的国家,如果没有选择国家,我希望能够按国家对参赛者进行排序或显示全部。
我已经使用 if/else
语句使用 $_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>';
一切正常,我单击其中一个链接以在 URL 中获取国家/地区名称:例如 index.php?page=2&country=Denmark
。之后我就给我一个 fetch_array
expects parameter to be 1, Boolean given error.
在我看来,这应该可行。
任何帮助都适用。
最好的祝福
~巴拉克纳
根据你的问题,你的错误是
Everything works up...fetch_array expects parameter to be 1,
您必须更改查询。而不是您的查询
$sqlCountry = "SELECT * FROM countries WHERE country_name = ".$_GET['country'];
您的查询变量在引号中,table名称和字段名称在反引号中。同样使用mysqli_real_escape_string
来防止sql注入
$country = mysqli_real_escape_string($db, $_GET['country']);
$sqlCountry = "SELECT * FROM `countries` WHERE `country_name` ='".$country."'";
所以,我在处理一个学校项目时遇到了一些问题。我有一份烹饪比赛的参与者名单。有 4 个来自 5 个不同的国家,如果没有选择国家,我希望能够按国家对参赛者进行排序或显示全部。
我已经使用 if/else
语句使用 $_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>';
一切正常,我单击其中一个链接以在 URL 中获取国家/地区名称:例如 index.php?page=2&country=Denmark
。之后我就给我一个 fetch_array
expects parameter to be 1, Boolean given error.
在我看来,这应该可行。
任何帮助都适用。 最好的祝福 ~巴拉克纳
根据你的问题,你的错误是
Everything works up...fetch_array expects parameter to be 1,
您必须更改查询。而不是您的查询
$sqlCountry = "SELECT * FROM countries WHERE country_name = ".$_GET['country'];
您的查询变量在引号中,table名称和字段名称在反引号中。同样使用mysqli_real_escape_string
来防止sql注入
$country = mysqli_real_escape_string($db, $_GET['country']);
$sqlCountry = "SELECT * FROM `countries` WHERE `country_name` ='".$country."'";