Jak dodać nową kolumnę do tabeli MYSQL?

Próbuję dodać nową kolumnę do mojej tabeli MYSQL za pomocą PHP. Nie jestem pewien, jak zmienić moją tabelę, aby powstała nowa kolumna. W mojej tabeli ocen Mam:

assessmentid | q1 | q2 | q3 | q4 | q5 

Powiedzmy, że mam stronę z textboxem i wpisuję q6 do textboxa i wciskam przycisk, a tabela zostanie zaktualizowana do:

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

Mój kod:

<?php 
  mysql_query("ALTER TABLE `assessment` ADD newq INT(1) NOT NULL AFTER `q10`");
?>
  <form method="post" action="">
    <input type="text" name="newq" size="20">
    <input type="submit" name="submit" value="Submit">
Author: ashleedawg, 2013-04-19

8 answers

Twoja tabela:

q1 | q2 | q3 | q4 | q5

Możesz również zrobić

ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5
 249
Author: Dima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-24 17:02:25
 $table  = 'your table name';
 $column = 'q6'
 $add = mysql_query("ALTER TABLE $table ADD $column VARCHAR( 255 ) NOT NULL");

Możesz zmienić VARCHAR( 255 ) NOT NULL na to, co kiedykolwiek zechcesz datatype.

 9
Author: Abdullah Salma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-19 21:24:51
  • Możesz dodać nową kolumnę na końcu tabeli

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

  • Dodaj kolumnę do początku tabeli

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

  • Dodaj kolumnę obok określonej kolumny

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

I więcej opcji tutaj

 8
Author: amarnath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 06:49:56

Coś w stylu:

$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";
}
Nie testowałem tego, ale powinno zadziałać.
 4
Author: Glitch Desire,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-19 21:25:19

Na podstawie Twojego komentarza wygląda na to, że dodajesz nową kolumnę tylko wtedy, gdy: mysql_query("SELECT * FROM assessment"); zwraca false. Pewnie nie tego chciałaś. Spróbuj usunąć'!'na początku $sql w pierwszej instrukcji 'if'. Więc Twój kod będzie wyglądał następująco:

$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...
 1
Author: Ryan Epp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-19 21:26:29

Powinieneś zajrzeć do normalizacji bazy danych, aby uniknąć tworzenia kolumn w czasie wykonywania.

Zrób 3 tabele:

  1. Ocena
  2. pytanie
  3. assessment_question (kolumny assessmentId, questionId)

Umieść pytania i oceny w odpowiednich tabelach i połącz je ze sobą za pomocą assessment_question za pomocą kluczy obcych.

 1
Author: Erik van Velzen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-13 16:16:35

Dla WordPressa:

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"
);}
 1
Author: T.Todua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-20 16:00:02
ALTER TABLE `stor` ADD `buy_price` INT(20) NOT NULL ;
 1
Author: Shinwar ismail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-11 17:36:59