在查询中构造mysql表名

时间:2015-02-15 10:16:15

标签: php mysql

这显然是非常明显的,但却让我疯狂了很长时间。

我在MySql数据库中有一堆表,其中的例子是

//表名000001_table1,000001_table2,000002_table1,000002_table2,000003_table1,000003_tabel2

在php中,我可以通过编程方式创建这些表

$db->query("CREATE TABLE {$tablenum}_table1 (ID INT PRIMARY KEY AUTO_INCREMENT, COL1 TEXT, COL2 TEXT, COL3 TEXT)")

然而,当我来阅读这些表格时,我遇到了问题

使用以下查询

$db->query("SELECT COUNT(*) from {$tablenum}_table1")

我收到错误

Table 'database.000001' doesn't exist[]

如果我在它周围放置退格键,我会收到错误

找不到文件:'。\ database \ 000001 @ 000d @ 000a_table1.frm'(错误号码:22 - 参数无效)[]

如果我在查询之前尝试构建表名,我会遇到同样的问题。

任何想法

由于

3 个答案:

答案 0 :(得分:1)

在表名周围使用反引号:

$db->query("SELECT COUNT(*) from `" . $tablenum . "_table1`")

希望它有所帮助。

答案 1 :(得分:0)

看起来像你的{$ tablenum} _table1将其转换为 {$ tableNum的} ._表1 (插入一个额外的点,他认为它是 00001.table1 ,这意味着: table1 FROM database 00001

答案 2 :(得分:0)

尝试使用变量tablename,如下所示:

$db->query("SELECT COUNT(*) from ${tablenum}_table1")