【问题标题】:In PHP, I encoded a JSON array from mySQL . i want to decode it in different php file在 PHP 中,我从 mySQL 编码了一个 JSON 数组。我想在不同的 php 文件中解码它
【发布时间】:2014-04-15 02:30:18
【问题描述】:

在 PHP 中,我从 MySQL 表中编码了一个 JSON 数组。我想在不同的 PHP 文件中解码它。我想通过 JavaScript 从不同的文件访问数据。请任何人帮助我。

我的代码是:

$serverName = "(local)";

$connectionInfo = array( "Database"=>"sample");

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) 
{
     echo "Connection established.<br/>";
}

else

{
     echo "Connection could not be established.<br/>";

     die( print_r( sqlsrv_errors(), true));
}
    $str="Select * from sam1";

    $res=sqlsrv_query($conn,$str) or die("Error !");

    $response=array();

while( $row = sqlsrv_fetch_array( $res, SQLSRV_FETCH_ASSOC) ) 
{

$response['tdata'][]=$row;

}
print(json_encode($response));

输出是:

 {"tdata":[{"id":"1","name":"aaa"},{"id":"2","name":"bbb"},{"id":"3","name":"ccc"}]}

我的解码函数是:

$data = file_get_contents('db2.php');

$data1 = json_decode($data, true);

print($data1);

但它不起作用..

【问题讨论】:

  • 有什么问题?您的描述难以辨认,请澄清。
  • 请使用{}按钮格式化代码。
  • 你现在可以用sqlsrv 做mysql 吗?我以为它只适用于 SQL Server。
  • db2.php 文件有什么作用?它输出什么?如果您在解码文件中运行var_dump($data),您可能会发现它会输出原始 PHP 代码。

标签: javascript php mysql arrays json


【解决方案1】:

当您返回JSON 编码字符串时,最好发送正确的标头。你应该这样返回JSON(你仍然可以使用print函数):

<?php
header('Content-Type: application/json');
echo json_encode($data);

现在,当您检索此输出时,将其发送到将返回一个对象的 json_decode 函数。

json_decode.

file_get_contents 函数检索文件的内容,它不解析它。要检索文件的内容:

  • 通过使用 URL 调用它(不要使用这个我展示这个方法只是为了学习,如果allow_url_fopen 指令是off,这个函数不会加载 URL,而是你可以使用curl库(here))

    $json = file_get_contents('www.example.com/db2.php');
    echo json_decode($json, true);
    
  • 通过将其包含在相对路径中

    $json = (include "db2.php");
    echo json_decode($json, true);
    

    在这种特殊情况下,db2.php 必须像这样使用return 语句

    return json_encode($response);
    
  • 通过使用ob_*include,这一次您不需要在db2.php 文件中添加return

    ob_start();
    include "db2.php";
    $json = ob_get_contents();
    ob_end_clean();
    echo json_decode($json, true);
    

【讨论】:

  • 谢谢你的朋友.. 但我没有得到答案.. :(
  • 非常感谢你......我得到了答案:) :) 并感谢你的解释:)
【解决方案2】:

看起来您正在使用 db2.php 的文本而不是在 php 中运行文件的输出填充 $data。试试这个:

$data = `php db2.php`

【讨论】:

  • 谢谢你的朋友.. 但我没有得到答案.. :(
猜你喜欢
  • 2019-06-20
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2023-03-12
  • 2018-08-12
相关资源
最近更新 更多