php - SQLSRV 在返回查询时跳过一行
问题描述
function ambassadorPrimaryMerchantContacts(){
//Load global MSSQL connection
$mssql = mssql_connect();
//Perform query
$result = sqlsrv_query($mssql,
"
EXECUTE Ambassador_MerchantPrimaryContact @AmbassadorID = 1
");
if( $result === false ) {
if( ($errors = sqlsrv_errors() ) != null) {
foreach( $errors as $error ) {
print("SQLSTATE: ".$error[ 'SQLSTATE']."<br />");
print("code: ".$error[ 'code']."<br />");
print( "message: ".$error[ 'message']."<br />");
}
}
}
sqlsrv_next_result($result);
sqlsrv_next_result($result);
sqlsrv_next_result($result);
$merchantContacts = array();
while($row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_NUMERIC))
{
array_push($merchantContacts, array($row[0],$row[1],$row[2],$row[3],$row[4]));
}
return $merchantContacts;
sqlsrv_free_stmt($result);
}
上面的代码执行我想要的操作并返回与查询返回的行数相匹配的行数。
但是,我硬编码了三个 sqlsrv_next_result($result);。查询将根据@AmbassadorID 更改,因此该部分需要是动态的。我尝试了以下循环:
while(!sqlsrv_fetch_array($result, SQLSRV_FETCH_NUMERIC))
{
sqlsrv_next_result($result);
}
但是这个循环跳过了第一行。我该如何解决?
谢谢!
解决方案
使用sqlsrv_has_rows()
. 这只是返回是否有任何行,但它不会获取其中之一。
while (!sqlsrv_has_rows($result)) {
sqlsrv_next_result($result);
}
推荐阅读
- angular - 如何将图像添加到幻灯片
- r - 如何在 google colab for R 中加载 csv 文件?
- vb.net - 在 VB.Net 中获取索引最高值
- aws-lambda - 为 AWS Lambda 添加权限的正确 terraform 语法
- asp.net-core - 如何修复:在 Azure Devops 构建管道实体框架不生成 SQL 脚本
- github - 无法在 Cocoapods 上推送自定义框架
- image - fluttercandies 扩展图像。如何用 1 根手指而不是 2 根手指双击来放大图像?
- python - 让python写入文件中的新行
- python - Peewee ORM中选择的子字符串
- python - 使用 LSTM 构建二元分类模型