0

来自 ORACLE 扩展的以下函数在 SQLSRV 中的等价物是什么oci_define_by_name

文档:https ://www.php.net/manual/en/function.oci-define-by-name.php

如何在 sqlsrv 中翻译这个(oracle php)?

 if ( isset( $_GET['Refdti'] ) ) 
  {
    $Refdti  = $_GET['Refdti'];
  }

  $ora_stmt = oci_parse($ora_connect, $request);
  if ( ! $ora_stmt ) 
  {
    $retour = array('success' => false, 'msg' => 'Problem oci_parse requete='.$request);
    oci_close($ora_connect);
    return;
  }
  oci_define_by_name($ora_stmt, 'REFDTI'   , $refdti);
4

1 回答 1

1

我不认为 SQL Server 的 PHP 驱动程序(sqlsrv扩展名)支持完全等效的oci_define_by_name()功能(将 PHP 变量与查询提取的列相关联)。可能适当的方法是使用sqlsrv_fetch_array()函数来检索下一行数据。请注意,您可以使用它sqlsrv_query()来准备和执行语句,因为(如文档中所述)此函数非常适合一次性查询,并且应该是执行查询的默认选择,除非有特殊情况适用

甲骨文示例:

<?php
if (isset($_GET['Refdti'])) {
    $Refdti = $_GET['Refdti'];
}

...
$ora_stmt = oci_parse($ora_connect, $request);
if (!$ora_stmt ) {
    $retour = array('success' => false, 'msg' => 'Problem oci_parse requete='.$request);
    oci_close($ora_connect);
    return;
}
oci_define_by_name($ora_stmt, 'REFDTI' , $refdti);
oci_execute($stid);

while (oci_fetch($ora_stmt)) {
    echo $refdti."\n";
}  

...
?>  

SQL Server 示例:

<?php
if (isset($_GET['Refdti'])) {
    $Refdti = $_GET['Refdti'];
}

...
$ms_stmt = sqlsrv_query($ms_connect, $request);
if ($ms_stmt === false ) {
    $retour = array('success' => false, 'msg' => 'Problem sqlsrv_query requete='.$request);
    sqlsrv_close($ms_connect);
    return;
}

while ($row = sqlsrv_fetch_array($ms_stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row["REFDTI"]."\n";
}

...
?>  
于 2020-05-20T06:11:34.707 回答