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

Php MYSQL:如果不存在,则插入列,php,mysql,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($i

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

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

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

如果您从未执行查询,则您的条件是您的查询字符串:

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

这是最后的代码。这是一个愚蠢的错误;我没有对
$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';
}

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

在检查语句之前,必须先运行查询。如果不打开该框(即运行查询),就无法看到该框是否为空(即查询结果)

用这个替换您的04行

$col = mysql_query("SELECT ".$col_name." FROM ".$prefix."users");
那你的问题就解决了

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

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


希望这能有所帮助

这就是我所做的,而且很有效:

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

啊,给我一点时间,让我试试。事实上,我刚刚意识到我犯了一个愚蠢的错误,我没有使用mysql\u查询$col。那真是个愚蠢的错误。。我将要求删除此问题。。谢谢或者我可以继续我的解决方案你必须先运行查询。请使用mysqli,因为mysql正处于弃用过程@pixelngrain在哪里使用mysqli?对于$col=mysqli还是任何地方?我是mysql新手,不知道是否有错,请检查提供的答案。尽量不要使用任何mysql_*函数。开始使用mysqliYes这是真的。谢谢。然而,我意识到,经过一段时间的张贴我愚蠢的问题和纠正后,我可以看到在我自己的答案。如果有什么不对劲,请告诉我。。再次感谢请注意,这不起作用。它将抛出一个致命错误,并使脚本的其余部分无用。