php - php ms sql server得到空响应
问题描述
运行 php 代码时得到空响应。这是我的代码
<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET,POST, OPTIONS");
header('Content-Type: application/json');
// include database and object files
include_once '../config/database.php';
$data = json_decode(file_get_contents("php://input"));
$CIFNO=$data->CIFNO;
$PUBLIC_KEY=$data->PUBLIC_KEY ;
//Read Query
$fetchgenders_sql=
" exec USP_GET_CUSTOMER_INFO_BY_CIF"
." @CIFNO ='009', @PUBLIC_KEY ='1556422589arijit11111199' ";
//echo json_encode($fetchgenders_sql);
$getgenderResults= sqlsrv_query($conn, $fetchgenders_sql);
if ($getgenderResults == FALSE)
die(print_r(sqlsrv_errors()));
$gender_arr = array();
while ($row = sqlsrv_fetch_array($getgenderResults, SQLSRV_FETCH_ASSOC)) {
$gender_arr[]= $row;
}
if (empty($gender_arr)) {
$genders = array(
"status" => "400",
"fieldName"=> "gender",
"defaultMessage" => "Sorry not found");
}else{
$genders = array(
"status" => "200",
"genders" => $gender_arr);
}
//print_r(json_encode($organizationType));
sqlsrv_close($conn); //Close the connnectiokn first
echo json_encode($genders);
?>
如果我获取语句“echo json_encode($fetchgenders_sql);” 并在数据库中运行,数据正在显示。但是在运行 php 时在 $row 中得到空响应。性别_arr 返回 null([])
解决方案
对您的意外结果的一种可能解释是,您的存储过程可能会返回多个结果集。造成这种情况的一个原因是当您错过将SET NOCOUNT ON作为存储过程的第一行时。然后受影响的行数是结果集的一部分。
您可以尝试使用sqlsrv_next_result()来检索所有结果集:
<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET,POST, OPTIONS");
header('Content-Type: application/json');
// Include database and object files
include_once '../config/database.php';
$data = json_decode(file_get_contents("php://input"));
$CIFNO = $data->CIFNO;
$PUBLIC_KEY = $data->PUBLIC_KEY ;
// Query
$fetchgenders_sql = "exec USP_GET_CUSTOMER_INFO_BY_CIF @CIFNO = '009', @PUBLIC_KEY ='1556422589arijit11111199'";
$getgenderResults = sqlsrv_query($conn, $fetchgenders_sql);
if ($getgenderResults === false) {
die(print_r(sqlsrv_errors()));
}
$gender_arr = array();
do {
while ($row = sqlsrv_fetch_array($getgenderResults, SQLSRV_FETCH_ASSOC)) {
$gender_arr[] = $row;
}
} while sqlsrv_next_result($getgenderResults);
// Result
if (empty($gender_arr)) {
$genders = array(
"status" => "400",
"fieldName"=> "gender",
"defaultMessage" => "Sorry not found"
);
} else {
$genders = array(
"status" => "200",
"genders" => $gender_arr
);
}
// End
sqlsrv_close($conn); //Close the connnectiokn first
echo json_encode($genders);
?>
推荐阅读
- ruby-on-rails - 带有 Rails 5.1 的 Redis 打破了 Rspec
- java - 使用 opencv java 加载某些图像时,imread 返回 null
- ruby - 当出现“错误数量的参数”时,Ruby 会自动添加参数
- dictionary - 使用具有不可比较对象的 Map
- ios - 如何根据 iPhone 8、X 或 iPad 的屏幕尺寸更改代码
- android - 接受来电的有序广播不起作用
- sapui5 - SAP UI5 渲染内置按钮
- php - Wordpress 数据库连接错误 & 数据库未正常关闭
- c# - 使用键盘上的 Delete 按钮调用 DeleteButtonClick
- sorting - 如何根据关键字数据类型的嵌套字段对 Elasticsearch 结果进行排序?