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>
ta table:
q1 | q2 | q3 | q4 | q5
tu peux aussi faire
ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5
$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
.
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
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.
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...
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:
Placez les questions et les évaluations dans leurs tables respectives et reliez-les ensemble via assessment_question à l'aide de clés étrangères.
ALTER TABLE `stor` ADD `buy_price` INT(20) NOT NULL ;
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"
);}