【问题标题】:PHP, calling a ADO object method that has optional parametersPHP,调用具有可选参数的 ADO 对象方法
【发布时间】:2009-10-20 20:22:20
【问题描述】:

我几乎已经完成了一组基本的帮助函数,用于通过 PHP 访问 ADO。我在尝试使用为 $cmd->Execute(,,adExecuteNoRecords); 设置的 adExecuteNoRecords 选项执行存储过程时遇到问题;

我已经为前两个参数尝试了 null,new VARAINT()、new VARIANT(null)、new VARIANT(VT_EMPTY) 等...

我要么返回“无法通过引用传递参数 1”,要么返回类型不匹配的 com_exception,并且 ->Execute(,,adExecuteNoRecords) 没有通过 PHP 解析。

我已经做了很多搜索,但我没有找到任何人使用它的一个例子。

那么在 PHP 中,当调用一个 COM 对象的具有可选参数的方法时,如何将开始参数设置为空?

谢谢。

【问题讨论】:

  • 旁注:执行存储过程时,即使它没有参数,您仍然需要执行 $cmd->Parameters->Refresh;

标签: php com ado


【解决方案1】:

尝试通过 $missing = new Variant(VT_ERROR) 代替可选参数。

顺便说一句,在 COM 参数中,即使是可选的,仍然有类型。如果一个可选参数是 BSTR,那么省略它通常就像传递一个空字符串。看起来奇怪的是,可选参数的默认值是在类型库中指定的。 IE。可选的 BSTR 参数可能具有“abc”默认值。因此,您应该在使用 PHP 构建调用之前对此进行研究。在您的特定情况下,Execute 有 3 个没有特定默认值的可选 VARIANT 参数,因此我们使用 VT_ERROR 来表示缺少 VARIANT 参数。

【讨论】:

    猜你喜欢
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多