【问题标题】:PDO: select fetch last columns as NULLPDO:选择获取最后一列为 NULL
【发布时间】:2014-04-07 12:26:56
【问题描述】:

当我使用 PDO(在 PHP 中)从 ODBC 中选择数据时,某些列被提取为 NULL,但在数据库中存在数据。在我使用 odbc_* 函数执行相同查询的地方,它工作正常。

这是我使用的代码

$sql = "SELECT * FROM table WHERE rowid = 123456";
$connection = odbc_connect("Velocis RDS", $usr, $pwd);
$result = odbc_exec($connection, $sql);
while ($data = odbc_fetch_array($result)) {
  print_r($data);
}

这样所有列都可以正确获取:

$connection = new PDO("odbc:Velocis RDS", $usr, $pwd);
$stmt = $dbConn->prepare("SELECT * FROM table WHERE rowid = 123456");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
print_r($stmt->fetchAll());

使用此代码,最后 9 列被提取为 NULL。此列没有什么特别之处。它包含文本或数字。

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: php pdo odbc velocis-rds


    【解决方案1】:

    实际上,我在使用 id 字段但其他数据库通过 pdo_odbc 返回 null 并且使用 odbc 100% 工作的不同类型的数据库中遇到了完全相同的问题。经过大量研究后,我发现了一个具有类似问题的 PHP 错误报告 (Bug#61573),但为我找出修复方法铺平了道路。


    尝试将字段类型转换为VARCHAR。这对我有用。问题是pdo_odbc 不适用于odbc 可以使用的几种类型。


    作为参考或如果仍然需要,请提供 PHP 版本和表架构,因为这些对于找出修复程序很重要。 :)

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多