PHP json_编码仅返回单行

PHP json_编码仅返回单行,php,mysql,arrays,json,session,Php,Mysql,Arrays,Json,Session,因此,我有一个关联数组$\u SESSION['cart\u items'])这是我打印时的当前输出($\u SESSION['cart\u items']): 在上面的输出中,第一个示例[3]=>23,其中[3]是id,23是我从表格中输入的数量: 我目前的数据: 请注意,在上图中,“数量”列与我在表单中输入的数量不同 到目前为止,这是我尝试过的代码: $statement = $conn->query("SELECT id, name, price, quantity FROM pr

因此,我有一个关联数组
$\u SESSION['cart\u items'])
这是我打印时的当前输出($\u SESSION['cart\u items']):

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

我目前的数据:

请注意,在上图中,“数量”列与我在表单中输入的数量不同

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

$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"}]
正如你们所看到的,虽然我只得到一行,应该是三行


我的查询有问题吗?

您显示会话数组中的数组键与数据库中的
id
s匹配<代码>内爆()内爆/合并数组中的值。因此,您需要内爆键:

implode(',', array_keys($_SESSION['cart_items']))
或翻转阵列:

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

你为什么要坐三排?!?json格式的意义在于将复杂的数据结构转换为单个字符串。在那种情况下断线是没有用的。所以问题是:你确定你真的想
json\u encode()
输出吗?为什么?@arkascha我的意思是我在数据库中有3条记录..好的,那么我建议你手动尝试这个查询。您很可能在结果集中只得到一个条目。产品id在DB
3,4,5
中是否与
cart\u项目的键一样,或者id
23,5,1
cart\u项目的值一样?你的例子不清楚我的帖子更新得这么快。它起作用了!因为我在angular.dependens中使用它,所以我如何访问这些值呢<代码>$ids=array_key($_SESSION['cart_items'])$数量=$\会话['cart\u items']
implode(',', array_flip($_SESSION['cart_items']))