【问题标题】:Oracle -> oci_define_by_name in sqlsrv [php]Oracle -> sqlsrv [php] 中的 oci_define_by_name
【发布时间】:2020-09-05 22:27:15
【问题描述】:

ORACLE 扩展oci_define_by_name 中的以下函数在 SQLSRV 中的等效项是什么?

文档: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);

【问题讨论】:

标签: php sql-server oracle odbc sqlsrv


【解决方案1】:

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

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);
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";
}

...
?>  

【讨论】:

  • 感谢我了解的所有代表,我会在这周有空的时候尝试一下并发布我所做的事情。这很清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多