我搜索了类似的问题,但得到的只是"CREATE TABLE IF NOT EXISTS"。
那根本不是我想要的!我只想检查所需的5个表是否存在,创建它们是完全不同的事情。
意思是我只想要"如果不存在"部分,而不是"创建表"。有没有办法和白痴一起做?
p/S:如果可能的话,请写下整个代码行(例如ORM::raw_execute('query')或其他什么)。我几乎没有处理数据库查询的经验:()
花了几个小时之后,问题来了:"我如何在paris/idiorm中运行execute sql查询并获得查询结果?"
Ididorm的raw_execute()不返回查询结果,而是在查询成功执行时返回true,否则返回false。
最后,我用解决了这个问题
ORM::for_table('')->raw_query("用于检查表是否存在的SQL查询")->find_one();
我没有给表名作为for_table()的参数,而是给它一个空字符串,然后调用raw_query(),这相当于直接调用原始查询。这对我来说是有效的。我还必须重置Idiorm的数据库连接,并清除缓存,以便在不同的数据库之间切换时工作。
在MySql上,您可以查询information_schema.tables
视图
SELECT n.table_name,
case when x.table_name is null
then 'Does not exist'
else 'Exists'
end as chk
FROM (
select 'mytable' as table_name union all
select 'table1' union all
select 'tbl1' union all
select 'another_table' union all
select 'fifth_table'
) n
LEFT JOIN information_schema.tables x
ON ( x.table_schema = 'test' AND x.table_name = n.table_name );
+ --------------- + -------------- +
| table_name | chk |
+ --------------- + -------------- +
| mytable | Exists |
| tbl1 | Exists |
| table1 | Does not exist |
| another_table | Does not exist |
| fifth_table | Does not exist |
+ --------------- + -------------- +