Як додати новий стовпець до таблиці MYSQL?


100

Я намагаюся додати новий стовпець до моєї таблиці 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>


Я не впевнений, як скласти запит, у мене це є, і він не працює. if (! $ sql) {mysql_query ("ALTER TABLE assessmentADD q6INT (1) NOT NULL AFTER q5"); відлуння 'Q6 створено'; } ELSE {// звідси просто продовжуйте сторінку як завжди! відлуння 'Q6 вже існує!';
Тренер Стівен

1
@StevenTrainor коментарі - не найкраще місце для вихідного коду. Якщо ви показуєте, де у вас є проблеми, це має бути частиною питання. Чи можете ви відредагувати своє запитання, щоб включити джерело?
Нік Фріман

неправильний код. mysql_query поверне булеву помилку в будь-який збій, не тільки коли ви намагаєтеся додати повторюване поле. завжди перевіряйте, mysql_error()що пішло не так. напр $result = mysql_query($sql) or die(mysql_error());.
Марк Б

Яке це питання стосується PHP?
Калонь Колоб

Відповіді:


237

ваш стіл:

q1 | q2 | q3 | q4 | q5

ви також можете зробити

ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5

2
Дякую, він працював з - mysql_query ("ALTER TABLE assessmentADD q6INT (1) NOT NULL AFTER q5");
Тренер Стівен

Як я можу назвати стовпець, будь-яке ім’я я введіть у текстове поле?
Тренер Стівен

1
значення текстового поля має бути в $ _POST ['newq'] після надсилання
Діма,

9
@StevenTrainor: Do НЕ використовувати у текстовому полі , як наприклад в операторі SQL. Ви повинні переконатися, що ви уникаєте цього, щоб уникнути вразливості ін'єкцій SQL.
Costi Ciudatu


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

ви можете змінити VARCHAR( 255 ) NOT NULLвсе, datatypeщо завгодно.


Отримав спасибі, як я можу назвати стовпчик, яке б ім’я я не вводив у текстове поле?
Тренер Стівен

1
@StevenTrainor, що ти маєш на увазі під собою textbox? якщо ви маєте на увазі inputте, що type='text'пишуть$column = $_POST['textbox'];
Абдулла Салма

@StevenTrainor спочатку потрібно назвати своє введення name='textbox'або змінити текстове поле $column = $_POST['textbox'];на ім'я вводу ...
Abdullah Salma

6
  • Ви можете додати новий стовпець у кінці таблиці

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

  • Додайте стовпчик до початку таблиці

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

  • Додати стовпчик поруч із вказаним стовпцем

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

і більше варіантів тут


3

Щось на зразок:

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

Не перевіряв, але повинен працювати.


Спасибі - Як я можу назвати стовпець, будь-яке ім’я я введіть у текстове поле?
Стівен Тренер

Замініть моє $nameзавдання таким чином: $name = $db->mysqli_real_escape_string($_GET['input']);якщо ви нормально подаєте форму. Якщо це ajax, це трохи складніше.
Глюк бажання

0

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

$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

Вам слід поглянути на нормалізацію бази даних, щоб уникнути створення стовпців під час виконання.

Складіть 3 таблиці:

  1. оцінка
  2. питання
  3. оцінка_питання (стовпці оцінкаІд, питанняІд)

Поставте запитання та оцінки у відповідні таблиці та зв’яжіть їх разом за допомогою оцінок за допомогою зовнішніх ключів.


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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.