PHP json_encode仅返回单行

时间:2016-10-12 16:13:56

标签: php mysql arrays json session

所以我有一个关联数组$_SESSION['cart_items'])这是我print_r($_SESSION['cart_items'])时的当前输出:

Array
(
    [3] => 23
    [5] => 5
    [4] => 1
)

在上面的输出中,第一个例如[3] => 23,其中[3]是id,23是我从表单输入的数量:

我目前的数据:

enter image description here

请注意,在上图中,数量列与从表单输入的数量不同。

到目前为止,这是我尝试过的代码:

$statement = $conn->query("SELECT id, name, price, quantity FROM product WHERE id IN (".implode(',',$_SESSION['cart_items']).")");

while($row = $statement->fetch(PDO::FETCH_ASSOC)) {
    $data[] = $row;

}

print json_encode($data);

这是输出:

[{"id":"5","name":"ballpen","price":"23","quantity":"13"}]

正如你所看到的那样,虽然我只得到一行,但应该是三行。

我的查询有问题吗?

1 个答案:

答案 0 :(得分:2)

您显示会话数组中的数组键与数据库中的implode()匹配。 implode(',', array_keys($_SESSION['cart_items'])) 内爆/连接数组中的值。所以你需要破坏密钥:

implode(',', array_flip($_SESSION['cart_items']))

或翻转阵列:

public class LinkedList<T extends Node<T>> {