我有一个带有 8 个表的数据库,它们打算通过加入它们来搜索 ID 号,但我想检索表的名称以在 php 中使用...
if($tablename == 'accounts'){
echo 'value found in accounts';
}
mysql查询会是什么?
(我不需要加入等方面的帮助,只需获取表名以及如何将其存储在 $tablename 中)
谢谢
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'db_name'
如果您一开始不知道表名,如何在表中搜索数据?
所以我想你已经知道表名,不需要像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']}";
'SHOW TABLES' 公平,它还在 mysql 上使用吗?:)