如何向MYSQL表添加新列

时间:2013-04-19 21:12:31

标签: php mysql add alter

我正在尝试使用PHP向我的MYSQL表添加一个新列。我不确定如何更改我的表以便创建新列。在我的评估表中,我有

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>

8 个答案:

答案 0 :(得分:215)

你的桌子:

q1 | q2 | q3 | q4 | q5

你也可以

ALTER TABLE yourtable ADD q6 VARCHAR( 255 ) after q5

答案 1 :(得分:7)

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

您可以将VARCHAR( 255 ) NOT NULL更改为您想要的datatype

答案 2 :(得分: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

以及更多选项here

答案 3 :(得分: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";
}

没有测试过,但应该可以使用。

答案 4 :(得分:0)

根据您的评论,如果: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...

答案 5 :(得分:0)

您应该考虑规范化数据库以避免在运行时创建列。

制作3张桌子:

  1. 评估
  2. 问题
  3. assessment_question(columns assessmentId,questionId)
  4. 将问题和评估放在各自的表格中,并使用外键通过assessment_question将它们链接在一起。

答案 6 :(得分: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"
);}

答案 7 :(得分:0)

ALTER TABLE `stor` ADD `buy_price` INT(20) NOT NULL ;