2017-10-08 286 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