Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Удалить столбец из таблицы MYSQL


Автор: neoks 11.9.2011, 16:32
Делаю скрипт который добавляет столбцы к таблицы, но столкнулся с проблемой Duplicate column name 'ststus'
Вопрос как удалить столбец из таблицы перед тем как ее создать и как не добавлять столбец если он уже есть.

То есть я могу выбрать обновить таблицу или нет.
Что это значит:
1. Если указано обновить то скрипт должен удалить все столбцы перед тем как создать
2. Если не обновлять тогда пропустить те столбцы которые уже есть и продолжить дальше.

Сам скрипт: 

Код

                   foreach($tableSchema_add as $name => $table){
                        $table_add = 'ALTER TABLE ' . PREFIX . '_' .$name.' ADD';
                        
                        foreach($table as $key=>$val){
                            $table_add .= ' '.$key.(($val != '') ? ' '.$val.',': '');
                        }
                        
                        $table_add = substr($table_add,0,strlen($table_add) - 1);
                        
                        $db->query($table_add);
                    } 


Сам массив:
Код

$tableSchema_add['post'] = array(
    'status'=>"int(1) NOT NULL default '0'"
);


Знаю что это можно сделать, но в нете не чего не могу найти.

Автор: neoks 11.9.2011, 17:25
А протупил на одном моменте, отключил вывод ошибки и нет проблем.
Теперь остался один вопрос, как удалить столбец из таблицы ?

Автор: Muerto 11.9.2011, 17:37
Проще всего зайти в phpmyadmin и удалить

Автор: neoks 11.9.2011, 17:38
Все сделал, пришлось немного повозится и перерыть куча сайтов чтоб найти.
Вот результат кому будет интересно.

Код

                   foreach($tableSchema_add as $name => $table){
                        
                        foreach($table as $key=>$val){
                            $table_add = '';
                            $drop_add  = '';
                            
                            if($_POST['mysql'] == 'create'){
                                $drop_add = 'ALTER TABLE ' . PREFIX . '_' .$name.' DROP '.$key;
                                
                                $db->query($drop_add,false);
                            }
                            
                            $table_add = 'ALTER TABLE ' . PREFIX . '_' .$name.' ADD '.$key.' '.$val;
                            
                            $db->query($table_add,false);
                        }
 
                    }

Автор: Absinthe 11.9.2011, 19:14
Цитата

Все сделал, пришлось немного повозится и перерыть куча сайтов чтоб найти.
 А просто мануал прочесть не проще было?

Автор: neoks 11.9.2011, 20:26
 А просто мануал прочесть не проще было
Проще, вопрос где достать этот мануал ?

Автор: Absinthe 11.9.2011, 23:33
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)