2011-04-30 97 views
2

我想檢查表中的字段是否已用NOT NULL定義。檢查表的字段是否具有NOT NULL屬性集

所以可以說我有下面的代碼來創建一個SQL查詢:

$sql = "CREATE TABLE `testdb`.`test` (`a` INT NULL, `b` INT NOT NULL DEFAULT \'2\');"; 

現在我想用PHP編寫一些代碼,可以查詢該表是否與否場B定義爲NOT NULL或不。我想這裏更常見的問題是如何查詢表的字段屬性。

回答

1

在這裏你去:

$table = 'my_table'; 
$result = mysql_query('DESCRIBE `' . $table . '`'); 

while($item = mysql_fetch_assoc()){ 
    print_r($item); // this will output the properties of the table 
} 

$item現在你將有一個名爲Null屬性,它要麼是NOYES

+0

這包括PHP,所以我將它設置爲答案。作爲一個小問題:我注意到當我這樣做時,我得到一個名爲「Extra」的字段。我該如何設置? – twerdster 2011-04-30 20:37:16

+2

額外通常保留'auto_increment'字符串。 – Pentium10 2011-04-30 20:40:09

4

您可以從information schema

INFORMATION_SCHEMA使用IS_NULLABLE欄提供訪問數據庫的元數據。

元數據是關於數據的數據,例如數據庫或表的名稱,列的數據類型或訪問權限。有時用於此信息的其他術語是數據字典和系統目錄。

INFORMATION_SCHEMA是信息數據庫,它存儲有關MySQL服務器維護的所有其他數據庫的信息。在INFORMATION_SCHEMA內部有幾個只讀表。它們實際上是視圖,而不是基表,因此沒有與它們關聯的文件。

SELECT column_name, 
     is_nullable 
FROM information_schema.columns 
WHERE table_schema = 'testdb' 
     AND table_name = 'test' 
+0

謝謝。 INFORMATION_SCHEMA正是我正在尋找的 – twerdster 2011-04-30 20:31:43