2013-04-19 4 views
78

Я пытаюсь добавить новый столбец в мою таблицу MYSQL с помощью PHP. Я не уверен, как изменить таблицу, чтобы создать новый столбец. В моей таблице оценки у меня естьКак добавить новый столбец в таблицу MYSQL

assessmentid | q1 | q2 | q3 | q4 | q5 

Скажет, у меня есть страница с текстовым полем и я тип Q6, чтобы текстовое поле и нажмите кнопку, то таблица обновляется до

assessmentid | q1 | q2 | q3 | q4 | q5 | q6 

Заранее спасибо

<?php 
include 'core/init.php'; 
include 'core/admininit.php'; 
include 'includes/overall/overall_header.php'; 
adminprotect_page(); 
include 'includes/adminmenu.php'; 
?>  
<?php 

mysql_query("ALTER TABLE `assessment` ADD newq INT(1) NOT NULL AFTER `q10`"); 

?> 
<h1>Input Career Name</h1> 

    <form method="post" action=""> 

     Career Name 
     <input type="text" name="newq" size="20"> 

    <input type="submit" 
     name="submit" value="Submit"> 

</body> 
</html> 
+3

РТЛМ: http://dev.mysql.com/doc/refman/5.1/en/alter-table .html –

+0

Im unsure, как сформулировать мой запрос, у меня есть это, и он не работает. $ sql = mysql_query ("SELECT * FROM evaluation"); if (! $ Sql) { mysql_query ("ALTER TABLE' оценка' ADD 'q6' INT (1) NOT NULL AFTER' q5' "); echo 'Q6 created'; } ELSE { // отсюда просто продолжайте страницу, как обычно! echo 'Q6 уже существует!'; –

+1

Комментарии @StevenTrainor - не лучшее место для исходного кода. Если вы показываете, где у вас проблема, это должно быть частью вопроса. Не могли бы вы изменить свой вопрос, чтобы включить источник? –

ответ

198

ваш стол:

q1 | q2 | q3 | q4 | q5 

вы также можете сделать

ALTER TABLE yourtable ADD q6 VARCHAR(255) after q5 
+2

Спасибо, Он работал с - mysql_query ("ALTER TABLE' оценка' ADD 'q6' INT (1) NOT NULL AFTER' q5' "); –

+0

Как я могу назвать столбец любым именем, которое я набираю в текстовое поле? –

+0

, если вы имеете в виду простое текстовое поле формы html, вы можете сделать это, получив сообщение или получив параметры на целевой странице формы. – Dima

6
$table = 'your table name'; 
$column = 'q6' 
$add = mysql_query("ALTER TABLE $table ADD $column VARCHAR(255) NOT NULL"); 

вы можете изменить VARCHAR(255) NOT NULL в то, что когда-либо datatype вы хотите.

+0

Получил это спасибо, как я могу назвать столбец любым именем, которое я набираю в текстовое поле? –

+1

@StevenTrainor Что вы подразумеваете под 'textbox'? если вы имеете в виду 'input' what' type = 'text'' write '$ column = $ _POST [' textbox '];' –

+0

@StevenTrainor сначала вам нужно указать свой ввод 'name =' textbox'' или изменить текстовое поле в '$ column = $ _POST ['textbox'];' для имени ввода ... –

2

Что-то вроде:

$db = mysqli_connect("localhost", "user", "password", "database"); 
$name = $db->mysqli_real_escape_string($name); 
$query = 'ALTER TABLE assesment ADD ' . $name . ' TINYINT NOT NULL DEFAULT \'0\''; 
if($db->query($query)) { 
    echo "It worked"; 
} 

не проверял, но должно работать.

+0

Спасибо - Как я могу назвать столбец любым именем, которое я набираю в текстовое поле? –

+0

Замените назначение '$ name' следующим образом:' $ name = $ db-> mysqli_real_escape_string ($ _ GET ['input']); 'при условии, что вы отправляете свою форму в обычном режиме. Если это ajax, это немного сложнее. –

0

На основе вашего комментария это похоже на то, что вы только добавляете новый столбец, если: mysql_query("SELECT * FROM assessment"); возвращает false. Вероятно, это не то, что вы хотели. Попробуйте удалить '!' перед $ sql в первом выражении if. Так что ваш код будет выглядеть следующим образом:

$sql=mysql_query("SELECT * FROM assessment"); 
if ($sql) { 
mysql_query("ALTER TABLE assessment ADD q6 INT(1) NOT NULL AFTER q5"); 
echo 'Q6 created'; 
}else... 
0

Вы должны смотреть в нормализации базы данных, чтобы избежать создания столбцов во время выполнения.

Make 3 таблицы:

  1. оценки
  2. вопрос
  3. assessment_question (колонны assessmentId, QuestionID)

задавать вопросы и оценки в соответствующих таблицах и связать их вместе через assessment_question с помощью внешние ключи.

4
  • Вы можете добавить новый столбец в конце вашего стола

    ALTER TABLE assessment ADD q6 VARCHAR(255)

  • Добавить столбец в начале таблицы

    ALTER TABLE assessment ADD q6 VARCHAR(255) FIRST

  • Добавить столбец рядом указанная колонка

    ALTER TABLE assessment ADD q6 VARCHAR(255) after q5

и больше вариантов here

0

для WordPress:

global $wpdb; 


$your_table = $wpdb->prefix. 'My_Table_Name'; 
$your_column =    'My_Column_Name'; 

if (!in_array($your_column, $wpdb->get_col("DESC " . $your_table, 0))){ $result= $wpdb->query(
    "ALTER  TABLE $your_table  ADD $your_column  VARCHAR(100)  CHARACTER SET utf8  NOT NULL  " //you can add positioning phraze: "AFTER My_another_column" 
);} 
Смежные вопросы