2016-08-22 16 views
0

こんにちは私は、MySQLのテーブルの列のサイズを見つけるためにSQLクエリを使用しています。このコードは、1つの列のサイズを見つけるために動作します。しかし、私はMySQLのテーブルのすべての列のサイズを取得したい。私はこのコードを試してみましたが、それはうまくいきませんでした場合mysqlのテーブルのすべてのカラムのサイズを取得

$sql="SELECT column_name, character_maximum_length FROM information_schema.columns 
    WHERE table_name = 'user' AND column_name = 'Country'"; 

: -

<?php 

    $sql="SELECT CONCAT(CHARACTER_LENGTH(col1,col2)) FROM tableName 
      WHERE col1 = 'Country' , col2 = 'email' AND tableName='user'"; 
    $r= mysql_query($sql); 
    $v=mysql_fetch_row($r); 
    echo $v[0]; 
    echo $v[1]; 
?> 
+1

何がうまくいかなかったのですか? –

+0

選択された連結クエリはwork.itの原因エラーではありません – babi

+0

したがって、特定のテーブルのすべての列長の合計である1つの数値が必要ですか? – Strawberry

答えて

2

information_schema.columnsはテーブルです。有効なSQLクエリを使用してクエリを実行する必要があります。ここに例があります。あなたがinformation_schemaのテーブルから情報を取得する際SCHEMA_NAME(データベース名)によってフィルタリングする必要があり

SELECT SUM(character_maximum_length) length, 
     table_name 
    FROM information_schema.columns 
    WHERE table_name='user' 
    AND table_schema=DATABASE() 
    AND column_name IN ('Country', 'email') 
    GROUP BY table_name 

注意してください。また、列のサイズは、数値列と日付列で異なっていることにも注意してください。

さまざまなテーブルから得られた結果をきちんと慎重に実験しない限り、このデータに頼らないでください。

これらのinformation_schemaテーブルを更新しようとすると、MySQLサーバーに悪いことが起こります。私がそれをどのように知っているか聞かないでください。 :-)

+0

ハロー先生、私はあなたのコード$ SQL = "SUMを選択(CHARACTER_MAXIMUM_LENGTH)長さ、 TABLE_NAME TABLE_NAME = 'ユーザ とSCHEMA_NAMEは=( '国' は AND COLUMN_NAMEを '送信' information_schema.columns FROM を試してみました、 'email') GROUP BY table_name "; $ r = mysql_query($ sql); $ v = mysql_fetch_row($ r); echo $ v [0]; echo $ v [1];警告:mysql_fetch_row()はパラメータ1がライン行$ v = mysql_fetch_row($ r)上のリソースであると予期しています。 – babi

+0

** Proのヒント#1 **:このウェブサイトを含むintertoobzから取得したコードサンプルが完全にデバッグされることは期待しないでください。 ** Pro tip#2 ** phpMyAdminのようなデータベースクライアントを使用して、SQLクエリをPHPやその他のプログラムに組み込む前にデバッグします。 ** Pro tip#3 **あなたのPHPプログラムのエラーをチェックしてください。 ** Pro tip#4 ** PHPからあなたのサーバにアクセスするための 'mysql_'インタフェースの使用を中止してください。それは何年も使用されていません。 –

+0

しかし、私はPHPでこのSQLクエリを使用したいと思います。あなたが提供したコードは動作しませんでした。 – babi

関連する問題