我正在 PHP 5.6.8 中开发一个 Web 应用程序,使用 MySql 作为数据库引擎。
在我验证用户是否具有适当凭据的方法中,我正在调用数据库并检索用户对象。功能代码为:
function getBoosterDetails($patientId){
$dbConnection = new Database();
$sql = "SELECT * from users where id = :patientId";
try {
$db = $dbConnection->getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("patientId", $patientId);
$stmt->execute();
$userDetails = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
$_SESSION['userDetails'] = $userDetails;
echo '{"user": ' . json_encode($userDetails) . '}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
} catch(Exception $e1) {
echo '{"error11":{"text11":'. $e1->getMessage() .'}}';
} }
对于任何有效的输入,我都收到对象无效的错误。我尝试在 Advanced Rest Client Chrome 插件中检查 userDetails 对象。我观察到,虽然对象的 var 转储具有整个对象数据,但 json_encode 的回显已被截断,如下图所示。
![在此处输入图像描述][1]
我已经使用 XAMPP 设置了 Apache 和 MySql 服务器(并且之前也尝试过使用 MAMP 并得到了相同的结果。)
// this is the var_dump
stdClass object
(
[username] => pavan
[rolename] => Patient
[userid] => 5
)
//this is the json_encode echo output
{"user": [{"username":"pavan", "rolename":"Patient", "userid":
内容在采用 json 编码时会被截断 您能帮我解决这个问题吗?
最佳答案
不要将 json-in-json 包装起来。这是错误的。
用您的宿主语言(例如 php)构建一个单一数据结构,然后对整个结构进行编码:
$data = array(
'user' => $userDetails
);
$json = json_encode($data);
您的代码正在生成语法非法的 json...
echo '{"user":' . json_encode($userDetails) . '}}';**
^--open #1 ^--close #1
^--close #2
这个#2 大括号闭合是什么?如果您进行单结构编码,这是不可能的。
关于php - json_encode正在截断从mysql数据库读取的对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31478531/