web-dev-qa-db-fra.com

Comment ajouter une nouvelle colonne à la table MYSQL

J'essaie d'ajouter une nouvelle colonne à ma table MYSQL en utilisant PHP. Je ne sais pas comment modifier ma table pour que la nouvelle colonne soit créée. Dans mon tableau d'évaluation, j'ai

assessmentid | q1 | q2 | q3 | q4 | q5 

Dites que j'ai une page avec une zone de texte et que je tape q6 dans la zone de texte et appuyez sur un bouton pour que la table soit mise à jour

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

Merci d'avance

<?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>
86
Steven Trainor

ta table:

q1 | q2 | q3 | q4 | q5

tu peux aussi faire

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

vous pouvez changer VARCHAR( 255 ) NOT NULL en ce que vous préférez datatype.

7
Abdullah Salma
  • Vous pouvez ajouter une nouvelle colonne à la fin de votre tableau

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

  • Ajouter une colonne au début du tableau

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

  • Ajouter une colonne à côté d'une colonne spécifiée

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

et plus d'options ici

6
amarnath

Quelque chose comme:

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

Je ne l'ai pas testé mais ça devrait marcher.

3
Glitch Desire

Selon votre commentaire, il semble que vous n’ajoutiez la nouvelle colonne que si: mysql_query("SELECT * FROM assessment"); renvoie false. Ce n'est probablement pas ce que tu voulais. Essayez de retirer le "!" sur le devant de $ sql dans la première déclaration 'if'. Donc, votre code va ressembler à:

$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
Ryan Epp

Vous devriez envisager de normaliser votre base de données pour éviter de créer des colonnes lors de l'exécution.

Faites 3 tables:

  1. évaluation
  2. question
  3. assessment_question (colonnes assessmentId, questionId)

Placez les questions et les évaluations dans leurs tables respectives et reliez-les ensemble via assessment_question à l'aide de clés étrangères.

0
Erik van Velzen
ALTER TABLE `stor` ADD `buy_price` INT(20) NOT NULL ;
0
Shinwar ismail

pour 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"
);}
0
T.Todua