如何从具有正确字段类型的数据库中获取值?
我使用 PDO Sqlsrv 从数据库获取数据,并且总是以字符串形式接收数据,如下所示:customer_id : "1"
My customer_id
字段类型应该是整数customer_id : 1
But phone_number
字段类型是 varchar 它返回正确的字符串类型,例如:phone_number : "12345678"
EDIT:
我正在使用 PHP 5.5。我已经尝试过这个。
$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);
解决方案:
我将准确回答你的问题,你可以尝试使用PDO语句::bindColumn https://learn.microsoft.com/en-us/sql/connect/php/pdostatement-bindcolumn?view=sql-server-2017。您使用 PHP 5.5 并基于支持矩阵 https://learn.microsoft.com/en-us/sql/connect/php/microsoft-php-drivers-for-sql-server-support-matrix?view=sql-server-2017#php-version-support,您的 PHP 驱动程序版本应该是 3.1 或 3.2。在这个版本中,基于变更日志 https://github.com/Microsoft/msphpsql/blob/master/CHANGELOG.md, SQLSRV_ATTR_FETCHES_NUMERIC_TYPE
不支持。
...
$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>';
}
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)