1

私はそれらを結合することによってID番号を検索することを意図している8つのテーブルを持つデータベースを持っていますが、私は次の行に沿って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_SCHEMATABLESテーブル

于 2012-09-17T22:06:49.533 に答える
1

そもそもテーブル名がわからない場合、どうすればテーブル内のデータを検索できますか?

したがって、あなたはすでにテーブル名を知っていて、SHOW TABLES;のようなものは必要ないと思います。WHEREあなたが持っていること例えば

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

行を取得すると、一致することはわかりますが、一致が発生した場所はわかりません。また、1つのJOINedではなく8つのストレートクエリを実行することはできません。

この場合、選択したフィールドにフラグを追加して、必要なものを通知する必要があります。

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 に答える