【问题标题】:php switch only using the default code blockphp 仅使用默认代码块切换
【发布时间】:2023-03-22 14:47:01
【问题描述】:

我有一个 php switch 语句,由于某种原因,php switch 只在默认块中执行默认代码,而不是在 case 块中,我首先检查我的变量是否已设置,然后使用 switch 从我的数据库中选择数据这是代码

$sel = 1;
    $sql = "(select * from insurance_companies WHERE id='$eop' LIMIT $sel)";
    foreach ($pdo->query($sql) as $row){ 
    $cID = $row['id'];  
    $cname = $row['name'];          
    }
 if  (isset($cname)) {
                    switch ($cname) {
                        case 'CASH':
                            $query= "SELECT test FROM cash_procedures WHERE test LIKE '%$did%'";
                 $result= $con->query($query);
 break;

                        default:
                              $query= "SELECT test FROM procedures WHERE test LIKE '%$did%'";
                 $result= $con->query($query);

}
    }

如果我的 $cname 变量匹配它,我想执行案例代码,但它会从默认代码块中的表中返回结果。我在这里查看了不同的帖子PHP switch not working as expected,这里是PHP switch "||" not working properly,这里是PHP switch case default

但他们没有解决我的问题

【问题讨论】:

  • 不,切换前echo $cname;。或者var_dump($cname);
  • 我得到了这个字符串(4)“CASH”,但它没有从数据库中回显任何东西
  • 和 echo 我得到了现金,这意味着是的,它确实应该可以工作,但由于某种原因它不是
  • $cname 只会是数据库的最后一行所具有的任何内容。在 foreach 循环之后,switch 语句之前,$cname 的值是多少?
  • 在foreach循环之前$cname不存在

标签: php


【解决方案1】:

这是因为$cnameCASH 不同。也许它不区分大小写?在 $cname 上运行 strtolower:

switch(strtolower($cname)) {
  case 'cash':
    echo 'got $$';
    break;
}

【讨论】:

  • 这不会改变任何事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多