如何将新列添加到MYSQL表

我想用PHP添加一个新的列到我的MYSQL表。 我不确定如何改变我的表,以便创build新的列。 在我的评估表中,我有

assessmentid | q1 | q2 | q3 | q4 | q5 

说我有一个文本框的页面,我键入q6到文本框中,然后按一个button,然后表格更新

 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> 

你的桌子:

 q1 | q2 | q3 | q4 | q5 

你也可以做

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

你可以把VARCHAR( 255 ) NOT NULL改成你想要的datatype

  • 您可以在表格的最后添加一个新列

    ALTER TABLE assessment ADD q6 VARCHAR( 255 )

  • 将列添加到表的开始处

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) FIRST

  • 在指定列旁边添加列

    ALTER TABLE assessment ADD q6 VARCHAR( 255 ) after q5

和更多的select在这里

就像是:

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

没有testing过,但应该工作。

基于你的评论,它看起来像你的只添加新的列如果: mysql_query("SELECT * FROM assessment"); 返回false。 这可能不是你想要的。 尝试删除“!” 在第一个“if”语句的$ 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... 

你应该考虑规范你的数据库,以避免在运行时创build列。

制作3个表格:

  1. 评定
  2. assessment_question(列评估ID,questionId)

将问题和评估放在各自的表格中,并通过使用外键的评估问题将它们连接在一起。

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