PHP PDO Sqlsrv始终以字符串形式返回每个值 [英] PHP PDO Sqlsrv always return every values as string

查看:89
本文介绍了PHP PDO Sqlsrv始终以字符串形式返回每个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从具有正确字段类型的数据库中获取价值?

How do I get value from DB with correct field type?

我正在使用PDO Sqlsrv从数据库获取数据,并且我总是以字符串形式接收数据,例如:customer_id : "1"我的customer_id字段类型是整数,应该是customer_id : 1,但是phone_number字段类型是varchar,它返回将类型更正为字符串,例如:phone_number : "12345678"

I'm using PDO Sqlsrv to fetch data from DB and I always receive data as string like: customer_id : "1" My customer_id field type is integer it should be customer_id : 1 But phone_number field type is varchar it return to correct type as string like: phone_number : "12345678"

我正在使用PHP 5.5.我已经尝试过了.

I'm using PHP 5.5. I've tried this.

$this->dbh->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, true);

我得到了这个错误Fatal error: Undefined class constant 'SQLSRV_ATTR_FETCHES_NUMERIC_TYPE'

我的PDO代码:

$this->dbh = new PDO('sqlsrv:Server=' . $_ENV['DB_HOST'] . ';Database=' . $_ENV['DB_NAME'], $_ENV['DB_USER'], $_ENV['DB_PASS']);
$this->dbh->exec('set names ' . $_ENV['DB_CHAR_SET']);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$this->dbh->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE, true); // Got Error 
$this->dbh->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);

推荐答案

解决方案:

我将完全回答您的问题,您可以尝试使用 PDOStatement :: bindColumn .您使用PHP 5.5并基于更改日志SQLSRV_ATTR_FETCHES_NUMERIC_TYPE不是支持.

I will answer exactly to your question and what you may try is to use PDOStatement::bindColumn. You use PHP 5.5 and based on support matrix, your PHP Driver version should be 3.1 or 3.2. In this version, based on change log, SQLSRV_ATTR_FETCHES_NUMERIC_TYPE is not supported.

...
$stmt->bindColumn('customer_id', $customer_id, PDO::PARAM_INT);
$stmt->bindColumn('phone_number', $phone_number, PDO::PARAM_STR);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
    var_dump($customer_id);
    var_dump($phone_number);
    echo '<br>';
}
...

这篇关于PHP PDO Sqlsrv始终以字符串形式返回每个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆