2013-04-19 20 views
78

Próbuję dodać nową kolumnę do mojej tabeli MYSQL za pomocą PHP. Nie jestem pewien, jak zmienić moją tabelę, aby utworzyć nową kolumnę. W moim stole oceny mamJak dodać nową kolumnę do tabeli MYSQL

assessmentid | q1 | q2 | q3 | q4 | q5 

Say Mam stronę z pola tekstowego i wpisz Q6 do pola tekstowego, a następnie naciśnij przycisk, a następnie tabela jest zaktualizowany do

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

Dzięki z góry

<?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

RTLM: http://dev.mysql.com/doc/refman/5.1/en/alter-table .html –

+0

Nie jestem pewien jak wyrazić moje zapytanie, mam to i nie działa. $ sql = mysql_query ("SELECT * FROM assessment"); jeśli (! $ Sql) { mysql_query ("ALTER TABLE' ocena' ADD 'q6' INT (1) NOT NULL PO' q5 "); echo "Utworzono Q6"; } ELSE { // od tego miejsca po prostu kontynuuj stronę jak zwykle! echo "Q6 już istnieje!"; –

+1

Komentarze @StevenTrainor nie są najlepszym miejscem dla kodu źródłowego. Jeśli pokazujesz, gdzie masz problem, powinno to być częścią pytania. Czy możesz edytować swoje pytanie, aby uwzględnić źródło? –

Odpowiedz

198

tabeli:

q1 | q2 | q3 | q4 | q5 

można też zrobić

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

Dzięki, działało z - mysql_query ("ALTER TABLE' assessment' ADD 'q6' INT (1) NOT NULL PO' q5' "); –

+0

Jak mogę nazwać kolumnę, niezależnie od nazwy, którą wpisuję w polu tekstowym? –

+0

jeśli chodzi o prosty formularz tekstowy w formacie HTML, można to zrobić, pobierając wpis lub uzyskując parametry na stronie docelowej formularza – Dima

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

można zmienić VARCHAR(255) NOT NULL na co kiedykolwiek datatype chcesz.

+0

Mam to dzięki, jak mogę nazwać kolumnę, niezależnie od nazwy, którą wpisuję w polu tekstowym? –

+1

@StevenTrainor co masz na myśli przez 'textbox'? jeśli masz na myśli 'input', co' type = 'text'' napisz '$ column = $ _POST [' textbox '];' –

+0

@StevenTrainor najpierw musisz nazwać swoje wejście 'name =' textbox'' lub zmienić pole tekstowe w '$ column = $ _POST ['textbox']; do nazwy wejścia ... –

2

Coś jak:

$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 go, ale powinien działać.

+0

Dzięki - Jak mogę nazwać kolumnę, niezależnie od nazwy, którą wpisuję w polu tekstowym? –

+0

Zamień moje przypisanie '$ name' na:' $ name = $ db-> mysqli_real_escape_string ($ _ GET ['input']); 'przy założeniu, że zwykle przesyłasz swój formularz. Jeśli jest to ajax, jest nieco bardziej skomplikowany. –

0

Na podstawie Twojego komentarza wygląda na to, że dodajesz tylko nową kolumnę, jeśli: mysql_query("SELECT * FROM assessment"); zwraca wartość false. Prawdopodobnie nie tego chciałeś. Spróbuj usunąć "!" z przodu $ sql w pierwszym "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... 
0

należy przyjrzeć się normalizacji bazy danych, aby uniknąć tworzenia kolumn w czasie wykonywania.

Producent 3 tabele:

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

pytania zadane i ocen w swoich tabelach i połączyć je ze sobą poprzez assessment_question korzystania klucz obcy.

4
  • Można dodać nową kolumnę na końcu tabeli

    ALTER TABLE assessment ADD q6 VARCHAR(255)

  • Dodaj kolumnę na początku tabeli

    ALTER TABLE assessment ADD q6 VARCHAR(255) FIRST

  • Dodaj kolumnę obok podaną kolumną

    ALTER TABLE assessment ADD q6 VARCHAR(255) after q5

i więcej opcji here

0

na 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" 
);}