php pdo informix以字符串或NULL形式返回数据

php pdo informix以字符串或NULL形式返回数据,php,pdo,informix,Php,Pdo,Informix,来自informix和PDO informix的数据总是作为字符串返回,只有NULL作为NULL返回 我试过和你一起玩 $pdo_conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo_conn->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); 没有成功。还有,当我尝试 $pdo_conn->getAttribute(PDO::ATTR_STRINGIFY_FE

来自informix和PDO informix的数据总是作为字符串返回,只有NULL作为NULL返回

我试过和你一起玩

$pdo_conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo_conn->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
没有成功。还有,当我尝试

$pdo_conn->getAttribute(PDO::ATTR_STRINGIFY_FETCHES);
我得到PHP致命错误:未捕获PDOException:SQLSTATE[IM001]:驱动程序不支持此函数:驱动程序不支持该属性

我用

有人知道如何使用pdo informix将我的float作为float吗

谢谢,
Arie.

Informix PDO驱动程序以PDO_参数_STR的形式返回所有内容(以PDO_参数_LOB的形式返回的CLOB除外)

与PDO_ODBC相同,对于结果集中的每一列,驱动程序使用SQL_C_CHAR进行内部SQLBindCol ODBC调用

ATTR_STRINGIFY_FETCHES属性的值没有区别,因为返回的数据类型已经是字符串。 您可以检查驱动程序源代码(第653行附近):


这是100%特定于驱动程序的。如果司机不支持,你就倒霉了。(我从未使用过Informix,所以我不知道是否如此。)谢谢您的回答。知道他们为什么要这么做吗?如果所有内容都作为字符串返回,那么float和int有什么用呢。。。即使浮点中的点也不会返回,它是一个没有点的数字字符串。这是非常无用的?我想它是更简单的返回一切作为一个字符串,让应用程序做转换,如果需要的话。请记住,Informix(和其他数据库)中有很多数据类型,而PHP中可能根本不存在这些数据类型。大多数情况下,所有内容都可以写成字符串(包括小数)。我尝试了一个简单的
select 1.123456789::float from…
,得到了
1.123456789
returned在尝试了您的建议后,我得出结论,它与DB\u LOCALE和CLIENT\u LOCALE有关。当我将squirrel SQL(jdbc驱动程序)与
DB_LOCALE=en_us.1252一起使用时;CLIENT\u LOCALE=en\u us。1252@dict;它返回一个逗号作为浮点,这在比利时很正常。知道如何使用CLIENT_LOCALE将其返回为点吗?与此同时,我正在寻找答案……这是正常的(我的意思是,这是我以前在区域设置不正确时看到的)。句点(.)被用作千位分隔符,而不是小数,这就是为什么除了数字之外,你看不到任何东西。客户端语言环境/DB语言环境的第一部分设置您的语言环境设置。en_US是指美国境内的英语(小数/千用句号和逗号表示)。尝试将CLIENT_LOCALE设置为nl_be.1252,可能会有用。我解决了这个问题,我应该看起来更好。这就是说:显然,我们有很多带有浮点数列的表,它们不用于存储浮点数,它们只包含整数。Ints>999用逗号表示,这就是为什么我错误地认为浮点是用逗号表示的。因此,JSAGERA,您的回答仍然很有帮助:现在我更了解pdo_informix的功能。谢谢
  $prep = $pdo_conn->prepare($query);
  $prep->execute();
  $result = $prep->fetchAll(PDO::FETCH_ASSOC);