2017-10-08 243 views
2

MySQL表使用SHOW表,然後顯示完整柱我得到這個數組創建一個從陣列

Array 
(
[tabel_de_test] => Array 
    (
    [0] => Array 
     (
      [Field] => id 
      [Type] => int(11) 
      [Collation] => 
      [Null] => NO 
      [Key] => PRI 
      [Default] => 
      [Extra] => auto_increment 
      [Privileges] => select,insert,update,references 
      [Comment] => comentariu 
     ) 
    [1] => Array 
     (
      [Field] => numee 
      [Type] => varchar(100) 
      [Collation] => utf8_unicode_ci 
      [Null] => NO 
      [Key] => 
      [Default] => 
      [Extra] => 
      [Privileges] => select,insert,update,references 
      [Comment] => 
     ) 
    ) 
) 

我試圖把這個回MySQL的使用功能

function tosql($tbl_name,$fields) 
{ 
    foreach($fields as $f_id => $f_arr) 
    { 
     $in.=''.$f_arr['Field'].' '.$f_arr['Type'].' '.$f_arr['Extra'].','; 
    } 
return 'CREATE TABLE '.$tbl_name.' ('.trim($in).')'; 
} 

不過,我需要的所有參數,不只是字段名稱,類型和額外的。 如何正確地做到這一點?

+0

您的查詢失敗,你需要找出原因。這樣做,你會看到錯誤。 –

+0

解釋你的評論! – degeaba

+0

https://dev.mysql.com/doc/refman/5.7/en/show-create-table.html不是你在做什麼? – Blag

回答

1

當你的潛在要求就是

如何使SQL使現有的表?

我會直接回答這個問題。


SQL提供真正有用的查詢(doc):

SHOW CREATE TABLE my_target_table 

這會打印出你這樣的事情:

CREATE TABLE `engine_cost` (
`engine_name` varchar(64) NOT NULL, 
`device_type` int(11) NOT NULL, 
`cost_name` varchar(64) NOT NULL, 
`cost_value` float DEFAULT NULL, 
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
`comment` varchar(1024) DEFAULT NULL, 
PRIMARY KEY (`cost_name`,`engine_name`,`device_type`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 

/\小心,這不會輸出可能綁定在桌子上的TRIGGER

使用

SELECT trigger_name 
FROM information_schema.triggers 
WHERE EVENT_OBJECT_TABLE='my_target_table'; 

而且

SHOW CREATE TRIGGER my_target_trigger