【问题标题】:Managing object arrays管理对象数组
【发布时间】:2016-02-01 08:36:18
【问题描述】:

我是一名 .NET 开发人员,最近开始学习 php。我想使用 php 来创建基本的 API。但是,我真的找不到合适的方法。

这是我的示例代码

<?php
header('Access-Control-Allow-Origin: *');
$conn = sqlsrv_connect( "ip", array("Database"=>"dbnane", "UID"=>"uid", "PWD"=>"123456")) or die("Couldn't connect");
$arr = array();
if( $conn ) {
     $result = sqlsrv_query($conn, "SELECT * FROM Table");
     while( $obj = sqlsrv_fetch_object( $result )) {
         $arr[] = $obj;
     }
     echo json_encode($arr);
}
sqlsrv_close($conn);
?>

我想将行作为对象放入数组中,并将该数组编码为 json。但是,这不会打印任何内容,并且我没有收到任何错误。我究竟做错了什么 ? 换句话说,我可以为请求的表创建一个数据传输对象/类并将其放入数组中。这可能可行,但如果可行,这种方法看起来更加动态和干净。

编辑:为了清楚起见,查询不会失败。我可以用

打印出值
         while( $obj = sqlsrv_fetch_object( $result )) {
              echo $obj->ColName ."<br/>";
        }

谢谢

【问题讨论】:

  • 您的查询可能失败。由于您根本不进行任何错误检测/处理,因此您盲目地假设您实际上 拥有 个对象,但情况可能并非如此。我建议您查看错误日志文件以了解原因。
  • @arkascha 查询不会失败。我可以使用$obj-&gt;ColName 获取里面的值。
  • 你在while循环后试过var_dump($arr);吗?它有输出吗?
  • 可能没有加载json扩展?但这也应该在日志文件中产生错误,您声称不会发生这种错误。奇怪的。那么剩下的就是你的输出了。 你输出到哪里
  • 可能json扩展没有加载,如果关闭则报错。

标签: php


【解决方案1】:

答案很简单,如果您声称查询正在产生输出,那么您实际回显的最后一件事可能不是json_encode() 的结果,所以将其移至您退出前的最后一件事。

<?php
    header('Access-Control-Allow-Origin: *');
    $conn = sqlsrv_connect( "ip", array("Database"=>"dbnane", "UID"=>"uid", "PWD"=>"123456")) or die("Couldn't connect");
    $arr = array();
    if( $conn ) {
         $result = sqlsrv_query($conn, "SELECT * FROM Table");
         while( $obj = sqlsrv_fetch_object( $result )) {
             $arr[] = $obj;
         }
    }
    sqlsrv_close($conn);
    echo json_encode($arr);
?>

【讨论】:

    【解决方案2】:

    我已经解决了我的问题。问题是我的对象的成员之一,它是一个 UTF8 字符串,json_encode(); 没有将其识别为 UTF8。在这种情况下,您应该注意两件事。

    首先,检查文档编码。在我的例子中,我的文档是用 ANSI 编码的 Notepad++ 保存的。我已经用记事本打开它并将编码更改为UTF8。

    其次,我使用了json_encode() 和一个可用于 PHP 5.4 及更高版本的额外参数JSON_UNESCAPED_UNICODE。所以我像json_encode($arr,JSON_UNESCAPED_UNICODE)一样使用它。

    然后噗。一切都像魅力一样。

    我找到了here

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-04
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多