我正在编写一个数据库抽象层,它也抽象出一些不同的查询类型。其中一个被称为“field_exists” - 其目的应该是非常明显的。
我想为SQLite实现这一点。
我遇到的问题是我需要使用一个查询,该查询返回确认该字段存在的行,否则返回none。因此,我不能使用PRAGMA方法。
那么,我可以使用什么查询来检查SQLite中是否存在满足上述条件的字段?
编辑:我应该补充说,查询需要能够在PHP代码中运行(使用PDO)。
此外,查询应该看起来像这样(只适用于MySQL):
SHOW COLUMNS FROM table LIKE 'field'
答案 0 :(得分:4)
尝试选择不存在的字段将返回异常,然后您可以捕获它并且不返回任何内容。
答案 1 :(得分:2)
使用.schema TABLENAME
命令。它将告诉您为创建表而发出的命令。有关更多信息,请查询SQLite command shell documentation。
如果您无权访问sqlite命令行,则始终可以查询sqlite_master表。假设您想知道用于创建表MyTable的命令。你发出这个:
select sql from sqlite_master where name='MyTable';
然后,它会为您提供用于创建表的sql命令。然后只需查看输出,看看你要查找的列是否在用于创建表的命令中。
更新2:
实际上比我上面发布的sql好,你可以使用这个:
PRAGMA table_info(*table_name*)
这将显示给定表格中的所有列及其类型和其他信息。