gpt4 book ai didi

PHP PDO Sqlsrv 总是将每个值作为字符串返回

转载 作者:可可西里 更新时间:2023-10-31 23:27:03 57 4
gpt4 key购买 nike

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

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

编辑:

我使用的是 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);

最佳答案

解决方案:

我会准确回答你的问题,你可以尝试使用 PDOStatement::bindColumn .您使用 PHP 5.5 并基于 support matrix ,您的 PHP 驱动程序版本应为 3.1 或 3.2。在此版本中,基于 change log , 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>';
}
...

关于PHP PDO Sqlsrv 总是将每个值作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514815/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com