我是一个网络开发人员,但我不太了解sql,现在我可以连接到服务器没问题,但它返回
variant Object
但在db中,info有数据值。我怎么能转换它?
[0] => Array
(
[0] => .0000
[1] => 70042
[2] => POLLERA LERGA C/CUERO EN CINTO
[3] => 1
[4] => 28
[5] => variant Object
[6] => INV02
[7] =>
[8] =>
[9] => variant Object
[10] => variant Object
[11] => variant Object
)
顺便说一下,我正在与ADODB.Connection进行连接
答案 0 :(得分:1)
我必须把
(string)
并且有效。
答案 1 :(得分:0)
来自the manual:
VARIANT是COM相当于PHP zval;这是一个结构 可以包含具有各种可能类型的值。该 COM扩展提供的VARIANT类允许您拥有更多 控制PHP将值传递给COM的方式。
和
PHP 5采用更简单的方法来处理VARIANT;什么时候 返回值或获取变量属性,变体是 仅当存在直接映射时才转换为PHP值 不会导致信息丢失的类型。在所有其他 case,结果作为VARIANT类的实例返回。 您 可以强制PHP将变体转换或评估为PHP本机类型 通过显式使用转换运算符,或隐式转换为a 打印字符串。您可以使用各种变体功能 在不强制a的情况下对变体执行算术运算 转换或冒数据丢失的风险。
您没有发布代码,但这意味着您通常只需打印它:
echo $result;
答案 2 :(得分:0)
请参阅此内容以获取帮助 - 我将其用作处理php变体的一种方式。 How do you read from a multidimensional variant array returned from a COM object in PHP?
答案 3 :(得分:0)
我已经解决了这个问题一段时间,并找到了一个对我有用的解决方案。因此,我们需要通过ADODB从MSSQL数据库返回每行四个值的记录集。 这一切都归结为您转换数据类型的位置!如果在将(变体)值复制到您选择的变量(主要是某个数组)之前转换数据类型,它将起作用。
示例:强>
$buffer = array();
$sql = "SELECT col1, col2, col3, col4 FROM tbl_mydata WHERE col1 > 100";
$rec = OpenRecordset($sql); // connect to db, make your own!
while (!$rec->EOF){
$buffer[] = array((string)$rec->fields[0], (string)$rec->fields[1], (string)$rec->fields[2], (string)$rec->fields[3]);
$rec->MoveNext();
}
closeRecordset($rec);
对于ADOdb文档,请参见手册(http://adodb.org/dokuwiki/doku.php?id=v5:userguide:userguide_index)
现在你的 $ buffer 数组已经准备好了字符串类型值。
foreach($buffer as ..... blabla...