首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个如果和转接器不能正常工作

多个如果和转接器不能正常工作
EN

Stack Overflow用户
提问于 2014-02-21 18:45:14
回答 4查看 80关注 0票数 1

用户被要求选择位置和美食来搜索附近的餐厅。现在,如果用户只选择特定的菜肴,那么所有的餐厅都应该从数据库和相同的案例位置中选择.这里只是回声的第一部分,而不是其他两个条件。救命啊!!请不要考虑注射

下面给出了用户重定向的php部件。

代码语言:javascript
复制
<?php

    if(isset($_REQUEST['location']) && $_REQUEST['cuisine'])
    {
        $sql="SELECT * FROM `restaurant` WHERE `location_id`='".$_REQUEST['location']."' and `cuisine_id`='".$_REQUEST['cuisine']."' ORDER BY restaurant_name ";
        echo"qu";
    }
    elseif(isset($_REQUEST['location']) && $_REQUEST['cuisine'] ='all cuisine')
    {
        $sql="SELECT * FROM `restaurant` WHERE `location_id`='".$_REQUEST['location']."' ORDER BY restaurant_name ";
        echo"here are result";
    }
    elseif(isset($_REQUEST['cuisine']) && $_REQUEST['location'] ='all location')
    {
        $sql="SELECT * FROM `restaurant` WHERE `cuisine_id`='".$_REQUEST['cuisine']."' ORDER BY restaurant_name ";
        echo"query";
    }
    else
    {
        echo"no result found";
    }
?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-21 18:51:58

为了使$_REQUEST['cuisine']等同于“所有美食”,首先需要设置变量$_REQUEST['cuisine']。地点也是。

因此,每当isset($_REQUEST['cuisine'])是真(同样也是位置)时,$_REQUEST['cuisine'] === 'all cuisine'都是真的,这就是为什么这两种情况永远不会发生的原因--它们都被isset($_REQUEST['location'] && $_REQUEST['cuisine'])抢占。

我想你要找的是:

代码语言:javascript
复制
<?php
    if(isset($_REQUEST['location'], $_REQUEST['cuisine']))
    {
        if($_REQUEST['cuisine'] === 'all cuisine')
        {
            $sql="SELECT * FROM `restaurant` WHERE `location_id`='".$_REQUEST['location']."' ORDER BY restaurant_name ";
            echo"here are result";
        }
        elseif($_REQUEST['location'] === 'all location')
        {
            $sql="SELECT * FROM `restaurant` WHERE `cuisine_id`='".$_REQUEST['cuisine']."' ORDER BY restaurant_name ";
            echo"query";
        }
        else
        {
            $sql="SELECT * FROM `restaurant` WHERE `location_id`='".$_REQUEST['location']."' and `cuisine_id`='".$_REQUEST['cuisine']."' ORDER BY restaurant_name ";
            echo"qu";
        }
    }
    else
    {
        echo"no result found";
    }
?>

PS:根据其他评论,http://php.net/ternary也值得注意。

票数 1
EN

Stack Overflow用户

发布于 2014-02-21 18:46:31

代码语言:javascript
复制
$_REQUEST['cuisine'] ='all cuisine' 

应该是

代码语言:javascript
复制
$_REQUEST['cuisine'] == 'all cuisine'

if ($a= 'a')将返回true,它不会比较。

如果你想比较的话

代码语言:javascript
复制
if($a == 'a')

下面是一个例子

代码语言:javascript
复制
$a = 'b';
if($a = 'a'){
    echo 'here';
}else{
    echo 'not here';
}

这将输出here

检查这里,http://php.net/ternary

票数 2
EN

Stack Overflow用户

发布于 2014-02-21 18:51:32

单个=分配一个值,而如果左侧的值等于右侧的值,则==返回true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21942690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档