【问题标题】:How can I change the result of array push in php [duplicate]如何在php中更改数组推送的结果[重复]
【发布时间】:2020-04-20 18:17:03
【问题描述】:

如果条件为真,我有以下代码将数据推送到数组中,但结果不是我所希望的;

         <?php
$sql = "SELECT * FROM cart WHERE sess_id = '$sess_id'";
$result = mysqli_query($conn, $sql);   
$items= array();

if (mysqli_num_rows($result) > 0) {
    // output data of each row

   while($row = mysqli_fetch_assoc($result)) 
{
    $items[] = [
        'sku' => $row["prod_sku"], 
        'quantity' => (int)$row["prod_qty"]
    ];
}
if ($postage === 4.00){
    array_push($items, "sku_GSxe2lDNfK5b6E", 1);
}
}
        $conn->close();
             ?>

我希望第二条记录看起来与第一条相同,但不包括记录信息。有人可以告诉我该怎么做。我没有对数组做过很多事情,也无法在任何地方找到我需要的信息。提前致谢。

[{"sku":"sku_GGBzZqwz44UhRf","quantity":1},"sku_GSxe2lDNfK5b6E",1]

我希望它像这样输出

[{"sku":"sku_GGBzZqwz44UhRf","quantity":1}, {"sku":"sku_GSxe2lDNfK5b6E","quantity":1},]

【问题讨论】:

    标签: php sql arrays


    【解决方案1】:

    您现有的代码将两个单独的值推送到数组中:

    if ($postage === 4.00){
        array_push($items, "sku_GSxe2lDNfK5b6E", 1);
    }
    

    你想将另一个数组推入数组中:

    if ($postage === 4.00){
        array_push($items, ["sku" => "sku_GSxe2lDNfK5b6E", "quantity" => 1]);
    }
    

    另外请注意,您的代码容易受到SQL injection 攻击。您应该通过mysqliPDO 使用带有绑定参数的预处理语句。 This post 有一些很好的例子。

    【讨论】:

    • 谢谢。那效果很好。我知道我必须修复 SQL 问题。当我将网站上传到实时环境时,我会这样做。
    • “当我将网站上传到实时环境时,我会这样做。”上传到实时环境之前执行。
    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2021-12-27
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多