I am trying to add a new column to my MYSQL table using PHP. I am unsure how to alter my table so that the new column is created. In my assessment table I have:
You can add a new column at the end of your table
ALTER TABLE assessment ADD q6 VARCHAR( 255 )
Add column to the begining of table
ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST
Add column next to a specified column
ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5
and more options here
You should look into normalizing your database to avoid creating columns at runtime.
Make 3 tables:
Put questions and assessments in their respective tables and link them together through assessment_question using foreign keys.
for 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"
);}
Based on your comment it looks like your'e only adding the new column if: mysql_query("SELECT * FROM assessment");
returns false. That's probably not what you wanted. Try removing the '!' on front of $sql in the first 'if' statement. So your code will look like:
$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...
your table:
q1 | q2 | q3 | q4 | q5
you can also do
ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5
ALTER TABLE `stor` ADD `buy_price` INT(20) NOT NULL ;