MYSQL:如果不存在,则插入列

时间:2012-11-08 17:28:08

标签: php mysql

我正在尝试通过检查列是否存在来添加列。如果没有,它应该通过下面的代码给出它已经存在的消息。

$prefix = 'vm_';
$col_name = 'checking';

$col = "SELECT ".$col_name." FROM ".$prefix."users";

if (!$col){
    $insert_col = "ALTER TABLE ".$table." ADD ".$col_name." DATETIME NOT NULL";

    mysql_query($insert_col);

    echo $col_name.' has been added to the database';
} else {
    echo $col_name.' is already exists';
}

但它不会添加任何列并直接显示该列已存在的消息。

5 个答案:

答案 0 :(得分:8)

您永远不会执行查询,而您的条件是查询字符串:

if (!$col) { //always false, since a nonempty string is always truthy

答案 1 :(得分:4)

这是最终的代码。有愚蠢的错误;我没有将mysql_query用于$col

$prefix = 'vm_';
$col_name = 'checking';

$col = mysql_query("SELECT ".$col_name." FROM ".$prefix."users");


if (!$col){
    //$insert_col = "ALTER TABLE ".$table." ADD ".$col_name." DATETIME NOT NULL";

    mysql_query("ALTER TABLE ".$prefix."users ADD ".$col_name." DATETIME NOT NULL");

    echo $col_name.' has been added to the database';
} else {
    echo $col_name.' is already exists';
}

答案 2 :(得分:3)

在使用它检查语句之前,必须先运行查询。这就像你不能打开框(即运行查询)就看不到框是否为空(即你的查询结果)

用这个

替换你的第04行
$col = mysql_query("SELECT ".$col_name." FROM ".$prefix."users");

然后你的问题就会解决

  

有关mysqli的更多信息,请阅读this article

您也可以考虑转到PDO语句。

希望这有帮助

答案 3 :(得分:2)

您尚未执行查询。首先执行查询,然后检查条件。

答案 4 :(得分:1)

这就是我所做的并且有效:

$db= new mysqli('host','user','password','db');
$query = "SHOW COLUMNS FROM tablename LIKE 'columnname'";
$db->query($query);
if(empty(empty($db->num_rows)) { 
   $alter = "ALTER TABLE tablename ADD columnname varchar(50) NOT NULL"; 
   $db->query($alter); 
} else { 
   echo 'column exists';
}