1

我有一个带有 8 个表的数据库,它们打算通过加入它们来搜索 ID 号,但我想检索表的名称以在 php 中使用...

if($tablename == 'accounts'){
     echo 'value found in accounts';
}

mysql查询会是什么?

(我不需要加入等方面的帮助,只需获取表名以及如何将其存储在 $tablename 中)

谢谢

4

3 回答 3

2
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = 'db_name'

19.12。INFORMATION_SCHEMA TABLES 表

于 2012-09-17T22:06:49.533 回答
1

如果您一开始不知道表名,如何在表中搜索数据?

所以我想你已经知道表名,不需要像SHOW TABLES; 你有例如 aWHERE的形式

WHERE (table1.field LIKE '%search%' OR table2.field2 LIKE '%search%' OR ...)

并且一旦检索到一行,您就知道它匹配,但您不知道匹配发生在哪里。并且运行八个直接查询而不是一个 JOINed 不是一种选择。

如果是这种情况,您必须用一个标志来补充您的 SELECTed 字段,以告诉您您需要什么:

SELECT ..., CASE
    WHEN accounts.field1 LIKE '%search%' THEN 'accounts'
    WHEN customers.name LIKE '%search%' THEN 'customers'
    ...
    END AS wtf FROM <rest of your query>

然后在 PHP 中检索行时,您将只使用该字段:

print "Value found in {$row['wtf']}";
于 2012-09-17T22:11:43.150 回答
0

'SHOW TABLES' 公平,它还在 mysql 上使用吗?:)

于 2012-09-17T22:06:58.817 回答