Как добавить новый столбец в таблицу MYSQL

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

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>

Ответ 1

Ваша таблица:

q1 | q2 | q3 | q4 | q5

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

ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5

Ответ 2

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

вы можете изменить VARCHAR( 255 ) NOT NULL на то, что вам нужно datatype.

Ответ 3

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

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

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

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

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

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

и больше вариантов здесь

Ответ 4

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

$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";
}

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

Ответ 5

Основываясь на вашем комментарии, похоже, что вы только добавляете новый столбец, если: 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...

Ответ 6

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

Сделайте 3 таблицы:

  • оценка
  • Вопрос
  • оценка_question (столбцы evaluationId, questionId)

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

Ответ 7

для 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"
);}

Ответ 8

ALTER TABLE 'stor' ADD 'buy_price' INT(20) NOT NULL ;