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

PHP函数中if语句中的多个条件未给出所需结果,php,function,mysqli,Php,Function,Mysqli,我目前正在处理一个网站的标题,我已经定义了一个函数,从数据库中给出结果,在标题部分显示,它在条件1和条件2下运行良好,但是当我需要它显示“主页”时,即当条件1或2未设置或为空时,它不会返回“主页”。我希望第三个条件出了问题,但不确定在哪里 p.s:get_path()是一个提取url参数并与数据库值进行比较的函数 <?php function title($dbc){ $path_info = get_path(); $title_

我目前正在处理一个网站的标题,我已经定义了一个函数,从数据库中给出结果,在标题部分显示,它在条件1和条件2下运行良好,但是当我需要它显示“主页”时,即当条件1或2未设置或为空时,它不会返回“主页”。我希望第三个条件出了问题,但不确定在哪里

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>

提前感谢您的关注。

我猜
isset($title\u prod)=''
应该是
$title\u prod=''和
isset($title\u cat)=''
应该是
$title\u cat
=''。

我猜
isset($title\u prod)=''
应该是
$title\u prod=''

isset($title\u cat)=''
应该是
$title\u cat
=''。

第三种情况中有一个小错误:

elseif(!isset($title_prod) OR !isset($title_cat) OR isset($title_prod)==''  OR isset($title_cat)=='')
isset()
返回一个布尔值,这意味着这些条件中的一个永远不会为真
isset($title\u prod)==''或isset($title\u cat)==''


我想您的意思是:
[…]或$title\u pord==”或$title\u cat==”

您的第三种情况有一个小错误:

elseif(!isset($title_prod) OR !isset($title_cat) OR isset($title_prod)==''  OR isset($title_cat)=='')
isset()
返回一个布尔值,这意味着这些条件中的一个永远不会为真
isset($title\u prod)==''或isset($title\u cat)==''


我想你的意思是:
[…]或$title\u pord==”或$title\u cat==”
你不能像这里那样将
isset
与空字符串进行比较:

 OR isset($title_prod)==''  OR isset($title_cat)==''
isset
返回一个布尔值

如果出现以下情况,则应在该位置上执行此操作:

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

您无法将
isset
与此处所做的空字符串进行比较:

 OR isset($title_prod)==''  OR isset($title_cat)==''
isset
返回一个布尔值

如果出现以下情况,则应在该位置上执行此操作:

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

我用下面的标题标签修改了它

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


以及建议的上述更改。也许我不需要第三个条件

我用下面的标题标签修改了它

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


以及建议的上述更改。也许我不需要第三个条件

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

elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='') 
if( $title_cat )
{
    (...)
}
elseif( $title_prod )
{
    (...)
}
else
{
    (...)
}
但是,您的脚本有意外的结果,因为如果,即,
$title\u cat==''
,则第一个
if
语句的计算结果为
True

if( isset($title_cat) )
您必须以以下方式更改代码:

elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='') 
if( $title_cat )
{
    (...)
}
elseif( $title_prod )
{
    (...)
}
else
{
    (...)
}

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

elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='') 
if( $title_cat )
{
    (...)
}
elseif( $title_prod )
{
    (...)
}
else
{
    (...)
}
但是,您的脚本有意外的结果,因为如果,即,
$title\u cat==''
,则第一个
if
语句的计算结果为
True

if( isset($title_cat) )
您必须以以下方式更改代码:

elseif(!isset($title_prod) OR !isset($title_cat) OR $title_prod=='' OR $title_cat=='') 
if( $title_cat )
{
    (...)
}
elseif( $title_prod )
{
    (...)
}
else
{
    (...)
}

很抱歉,我的代码有误。我修复了它,但没有做任何更改:-(好吧,我不知道get_path做什么,但是如果call_parts为空,它会工作:很抱歉,这是我代码中的一个错误。我修复了它,但没有做任何更改:-(好吧,我不知道get_path做什么,但是如果call_parts为空,它会工作: