PHP json_encode()在数组前面添加不需要的字符串“connected”[关闭]

irlmq6kh  于 2023-10-21  发布在  PHP
关注(0)|答案(1)|浏览(101)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
5天前关闭。
Improve this question
编辑:
这是我的错,因为我不明白当PHP包含一个文件时会发生什么。

  • 我现在被禁止提问,仅仅因为我有问题需要专业人士的帮助,这仍然是绝对愚蠢的。*
  • 想象一下,如果不能得到人们的帮助而不受到惩罚......仅适用于堆栈溢出。*

我正在使用mysqli从我的数据库中获取数据,并希望显示收到的数据。
我想这样做的原因是因为我将使用我的主页中的数据(显然),但我在另一个php文件中运行sql查询。

  • 参考文件夹结构:*
/
├─ api/
│  ├─ popular-items.php
├─ home/
│  ├─ index.php

如果我以预期的方式将popular-items.php包含在index.php中,我将面临必须释放内存并关闭index.php文件中的连接的烦恼。
这是我不想看到的更不必要的代码。
这就是为什么我选择JSON编码我的结果,然后回显它并在index.php中使用它,
所以我可以保留我的代码来释放内存并关闭popular-items.php内部的连接。
但是,由于某些未知的原因,json_encode()在前面添加了字符串“connected”。(见下图)

我尝试用preg_replace手动删除字符串,但由于某种神奇的原因,它仍然存在。

$result = $conn->query($query);

// fetch the data into a regular PHP array
$data = $result->fetch_all(MYSQLI_ASSOC);

// manually construct JSON output
$json_output = json_encode($data);

// remove the unwanted "connected" prefix if present -- DOESN'T WORK
$json_output = preg_replace('/^connected/', '', $json_output);

echo $json_output;

我在网上没有发现任何其他人有这个问题。
即使是ChatGPT也没有解决方案,现在只是在说一些随机的废话。
这是我的全部代码

<?php
include_once(__DIR__ . "\db\dbc.php");

// define query
$query = "
WITH product_sales AS ( -- create a CTE table called product_sales which gets all the distinct products sold
    SELECT product_id, SUM(quantity) AS total_quantity
    FROM order_item
    GROUP BY product_id
)
SELECT p.*
FROM product p
JOIN product_sales ps ON p.id = ps.product_id -- join product on CTE product_sales based on id
ORDER BY ps.total_quantity DESC -- order by total amount sold descending
LIMIT 2;
";

$result = $conn->query($query);

// fetch the data into a regular PHP array
$data = $result->fetch_all(MYSQLI_ASSOC);

// free up memory
$result->free_result();

// close connection
$conn->close();

// manually construct JSON output
$json_output = json_encode($data);

// remove the unwanted "connected" prefix if present -- DOESN'T WORK
$json_output = preg_replace('/^connected/', '', $json_output);

echo $json_output;
z2acfund

z2acfund1#

不,不是的。json_encode()什么都没有得到(提示:你可以在你echo $json_output之前回显其他的东西来证明这一点)。
你应该搜索你的源代码中的connected字符串(我建议区分大小写搜索字面上的"connected"(双引号和单引号),显然有些代码首先回应。从字符串本身判断,我会检查$conn对象的来源。也许这就是你包含的\db\dbc.php

相关问题