【问题标题】:How to check array in fetch_array if its contain certain word?如何检查 fetch_array 中的数组是否包含某个单词?
【发布时间】:2021-12-31 09:02:47
【问题描述】:

嗨,我想检查我的fetch_array 是否包含我想要的一些字符串 这是源代码

$stmt = $conn->prepare ("SELECT g.No_meja 
                                        FROM orders o JOIN guest_order gord ON o.Kode_Guest_Order = gord.Kode_guest_order JOIN guest g ON gord.Kode_Meja = g.Kode_meja
                                                                 JOIN product_order po ON o.Kode_Produk_Order = po.Kode_produk_order
                                                                 JOIN product p ON po.Kode_Produk = p.Kode_produk
                                                                 JOIN topping_order tord ON po.Kode_produk_order = tord.Kode_Produk_Order
                                                                 JOIN topping t ON tord.Kode_Topping = t.Kode_topping
                                        WHERE o.Status_order = 'Disiapkan' GROUP BY o.Kode_order;");
                $stmt->execute();
                $resultTableColor = $stmt -> get_result();
                while ($rowTable = $resultTableColor -> fetch_array(MYSQLI_ASSOC)){

                    if(strpos($rowTable['No_meja'],"1")){
                        $table1Status = "green";
                    }
                    else {
                        $table1Status = "white";
                    }
                    
                    if (strpos($rowTable['No_meja'],"2")){
                        
                        $table2Status = "green";
                        
                    }
                    else {
                        $table2Status = "white";
                        
                    }
                    if (strpos($rowTable['No_meja'],"9")){
                        $table9Status = "green";
                    }
                    else {
                        $table9Status = "white";
                    }  
                }
                echo "Table 1 ".$table1Status. "<br>";
                echo "Table 2 ".$table2Status."<br>";
                echo "Table 9 ".$table9Status."<br>";

更新: strpos 正在工作,但它总是变为 false

查询的输出是这样的:

如果找到它的“某个数字”,输出应该是绿色的,但它总是变假,所以输出是白色的

【问题讨论】:

  • strpos() 中,干草堆在针头之前。换句话说,您需要交换参数。
  • 是的,重复是因为您将回声放在循环中,而不是在它之后;但是,您为什么要在 PHP 中这样做?在查询中加入WHERE 子句可能更容易。
  • @KIKOSoftware 哦,天哪,没有意识到这个论点是落后的
  • @Raxi 因为我想将它与许多 if else 条件一起使用,如果我有 13 个表的每个表都进行选择,它会很拥挤
  • 我。我当然不知道你的数据库布局。但通常带有WHERE 子句和IN 运算符之类的SQL 最适合这些事情。

标签: php mysql arrays


【解决方案1】:

原来我错把 strpos 参数设置为 strpos($rowTableColor['No_meja'],$table2Check)

更新: 感谢php if statement on mysqli fetch array

我会解决的

通过更改查询:

SELECT g.No_meja 
FROM orders o JOIN guest_order gord ON o.Kode_Guest_Order = gord.Kode_guest_order JOIN guest g ON gord.Kode_Meja = g.Kode_meja
              JOIN product_order po ON o.Kode_Produk_Order = po.Kode_produk_order
              JOIN product p ON po.Kode_Produk = p.Kode_produk
              JOIN topping_order tord ON po.Kode_produk_order = tord.Kode_Produk_Order
              JOIN topping t ON tord.Kode_Topping = t.Kode_topping
WHERE o.Status_order = 'Disiapkan' 
GROUP BY o.Kode_order ORDER BY gord.Kode_Guest_Order DESC;

并将方法从 strpos 更改为常规 if-else 比较,如下所示:

while ($RowTable = $resultTableColor -> fetch_array(MYSQLI_ASSOC)){
                        
                        if ($RowTable['No_meja'] == "1"){
                            $table1Status = "green";
                        }
                        else if($RowTable['No_meja'] == "2"){
                            $table2Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "3"){
                            $table3Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "4"){
                            $table4Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "6"){
                            $table6Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "7"){
                            $table7Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "9"){
                            $table9Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "10"){
                            $table10Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "11"){
                            $table11Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "12"){
                            $table12Status = "green";
                        }
                        else if ($RowTable['No_meja'] == "13"){
                            $table13Status = "green";
                        }
                        else {
                            
                        }
                    }

并在while之外设置whitequery之前的默认颜色:

$table1Status = "white";
$table2Status = "white";
$table3Status = "white";
$table4Status = "white";
$table6Status = "white";
$table7Status = "white";
$table9Status = "white";
$table10Status = "white";
$table11Status = "white";
$table12Status = "white";
$table13Status = "white";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2013-10-21
    • 1970-01-01
    • 2018-04-17
    • 2014-05-18
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多