如何使用 PDO 确定列类型?
当使用 PDO 从数据库读取数据时,我需要一种方法来确定数据库列的类型(varchar/numeric/date/...)。
当从数据库中获取值时,PDO 仅生成字符串值,而不管表列的实际类型如何。
是否有任何非驱动程序特定的方法来获取此信息?我知道有一些 SQL 语句可以检索任何给定表的类型,但我更喜欢更通用的解决方案。
编辑: PDOStatement::getColumnMeta() 对我来说没有用,因为我目前使用的 PDO 驱动程序 (Oracle) 不支持它。
I need a way to determine the type of a database column (varchar/numeric/date/...) when reading from the DB with PDO.
When fetching values from the DB, PDO produces only string values, regardless of the actual type of the table column.
Is there any non driver specific way to get this information? I know that there are SQL statements that retrieve the types for any given table but i'd prefer a more generic solution.
EDIT:
PDOStatement::getColumnMeta() is of no use to me, because it's not supported by the PDO driver I use at the moment (Oracle).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我不久前写了一个函数来提取表列信息。我最终做了这样的事情:
对于典型的主键,会产生这样的结果:
然后我将输出解析为可用的数组。然而,那是 PHP 5.1.0 之前的版本。现在您可以使用 PDOStatement->getColumnMeta。
I wrote a function a while ago which extracted table column information. I ended up doing something like this:
For a typical primary key, that produces this:
I then parsed the output into a usable array. However, that was pre-PHP 5.1.0. Now you can probably use PDOStatement->getColumnMeta.
如果您使用 Oracle:
但它不可移植
许多 SQL 风格也有
If you're working with Oracle:
but it isn't portable
Many SQL flavours also have
如果您使用 Postgres:
If you're working with Postgres:
看看这个方法: PDOStatement->getColumnMeta
Take a look at this method: PDOStatement->getColumnMeta
这就是我在 WraPDO 类中的做法:
$sth: PDOStatement->获取ColumnMeta
This is how I did it in my WraPDO class:
$sth: PDOStatement->getColumnMeta
它被标记为“实验性”,但是
PDOStatement->getColumnMeta< /code>
方法看起来会做你想做的事。
It's marked as "experimental", but the
PDOStatement->getColumnMeta
method looks like it will do what you want.