我是.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/>";
}
由于
答案 0 :(得分:0)
答案非常简单,如果您声称查询正在生成输出,那么您实际回显的最后一件事可能不是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);
?>
答案 1 :(得分:0)
我已经解决了我的问题。问题是我的对象的成员之一,即UTF8字符串不被json_encode();
识别为UTF8。在这种情况下,你应该看两件事。
首先,检查文档编码。就我而言,我的文档由Notepad ++保存,用ANSI编码。我用记事本打开它并将编码更改为UTF8,我已经改变了。
其次,我使用了json_encode()
一个额外参数,可用于PHP 5.4及以上版本,JSON_UNESCAPED_UNICODE
。所以我像json_encode($arr,JSON_UNESCAPED_UNICODE)
一样使用它。
和poof。一切都像魅力一样。
我发现了here
谢谢大家。