当前位置: 首页 > 面试题库 >

如何使用PDO从MySQL获取数值类型?

雷方伟
2023-03-14
问题内容

我使用PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDOStatement返回的是数字的字符串表示形式,而不是数字类型的值。如何防止这种情况发生?

我注意到有一个PDO类的属性:PDO::ATTR_STRINGIFY_FETCHES应该可以解决这个问题,但是在尝试修改它时,它抛出一个错误,指出该属性对MySQL驱动程序无效。

查询数据库时,获取字符串而不是数字是否正常?


问题答案:

我不认为可以在PHP 5.2中完成“数字”操作 :-(

如果我没记错的话,在PHP 5.3中,当您使用新的 (在PHP > = 5.3中是新的) mysql nd (MySQL本机驱动程序)
驱动程序时,就有可能。

好吧,在进一步浏览我的书签之后,我发现了有关mysqlnd的这篇文章: PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3

它说(引用):

对PDO使用mysqlnd的优点

当使用服务器端的预处理语句时,mysqlnd返回本机数据类型,例如,INT列作为整数变量而不是字符串返回。这意味着内部的数据转换较少。

但这仅是PHP 5.3(前提是您的PHP 5.3版本是使用mysqlnd编译的( 而不是旧的libmysql) ),并且似乎仅适用于已准备好的语句:-(

抱歉…

一种解决方案是在PHP端具有一个映射系统 _(例如ORM-参见 Doctrine;仅作为ORM的一个示例:我不知道它是否满足您的要求)_来转换结果从数据库到PHP数据类型…

是的,如果要使用类型敏感的运算符(例如)===和,这是很不好的!==



 类似资料:
  • 问题内容: 我正在尝试使用PDO从表中检索数据,只是我似乎无法向浏览器输出任何内容,只是得到了一个纯白页。 问题答案: 例。 这是您的dbc类 您的PHP页面:

  • 我想知道那些每天都涨价的水果的名字。所以产量应该是“苹果”,因为苹果的价格在3月1日是15,3月2日是16,3月3日是17...............................................请任何人给我建议。

  • 我正在与Avro合作,我有一个通用记录。我想从中提取clientId、deviceName、holder。在Avro模式中,

  • 我已经定义了变量$row_id1(例如$row_id1=1;) mysql中有一列名为Number。 要选择列号,如果列中存在$row_id,则要获取(获取、定义)值。实际上要检查列中的编号是否存在$row\U id值。 代码有什么问题? 在输出中,我得到数组$Number1 似乎简单(愚蠢)的问题,但寻找了几个小时,没有解决办法 更新代码 本部分与问题无关(仅供参考) 这与问题有关(这里我从输入

  • 我到处寻找,并尽一切努力从SQLQueriesRadion按钮获取选定的mySQL值。 这是我的密码 谢啦

  • 问题内容: 我正在掌握PDO的基础知识。 但是我试图获取插入的行的ID,我使用: 我遇到的教程都是关于交易的,但是我没有使用交易! 问题答案: 您可能正在寻找lastInsertId。“返回最后插入的行或序列值的ID”。