PHP中函数内if语句中的多个条件没有给出所需的结果

时间:2016-02-10 14:26:34

标签: php function mysqli

我目前正在研究一个网站的标题,我已经定义了一个函数来提供数据库的结果,以便在标题部分显示它对于条件1& 2,但是当我需要它显示'Home'时,即当条件1或2没有设置或为空时它不会返回'Home'。我希望第三个条件做错了但不知道在哪里。

P.s:get_path()是一个提取url参数以将它们与数据库值进行比较的函数。

<?php
    function title($dbc){

            $path_info = get_path();
            $title_prod= $path_info['call_parts'][0];
            $title_cat = $path_info['call_parts'][1];

            if(isset($title_cat))
            {
                $query = "SELECT * FROM prdct_categories WHERE slugs = '$title_cat'";
                $result = mysqli_query($dbc, $query);
                $row = mysqli_fetch_assoc($result);
                $titleslug = $row['subgroup'];

            } elseif(isset($title_prod))
            {           
                $query1  = "SELECT * FROM prdct_categories WHERE product = '$title_prod'";
                $result1 = mysqli_query($dbc, $query1);
                $row = mysqli_fetch_assoc($result1);
                $titleslug = $row['product'];
             } elseif(!isset($title_prod) OR !isset($title_cat) OR isset($title_prod)==''  OR isset($title_cat)=='') 
             {
                $titleslug = 'Home';
             }
              return $titleslug;
              mysqli_close($dbc);
            }
        ?>
<title><?php echo title($dbc); ?></title>

提前感谢您对此进行调查。

5 个答案:

答案 0 :(得分:1)

我猜测isset($title_prod)==''应该是$title_prod == ''isset($title_cat)==''应为$title_cat ==&#39;&#39;。

答案 1 :(得分:1)

您无法像此处那样将isset与空字符串进行比较:

 OR isset($title_prod)==''  OR isset($title_cat)==''

isset返回一个布尔值。

如果出现以下情况,你应该这样做:

elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod==''  OR $title_cat=='') 

答案 2 :(得分:0)

你的第三个条件有轻微错误:

elseif(!isset($title_prod) OR !isset($title_cat) OR isset($title_prod)==''  OR isset($title_cat)=='')

isset()返回一个布尔值,表示其中一个条件永远不会为真isset($title_prod)=='' OR isset($title_cat)==''

我认为您的意思如下:[...] OR $title_pord == "" OR $title_cat == ""

答案 3 :(得分:0)

我用标题标签修改了以下更改;

<title><?php if(title($dbc) != null){echo title($dbc)." | ".'Upperbit';}else echo "Home"  ." | ".'Upperbit'; ?></title>

随着建议的上述变化。也许我不需要第三个条件

答案 4 :(得分:0)

假设您已经以这种方式根据正确的isset语法更改了脚本:

elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='') 

但是,您的脚本会产生意外结果,因为如果{,$title_cat=='',第一个if语句被评估为True

if( isset($title_cat) )

您必须以这种方式更改代码:

if( $title_cat )
{
    (...)
}
elseif( $title_prod )
{
    (...)
}
else
{
    (...)
}