4

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

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

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

4

5 回答 5

8

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

if (!$col) { //always false, since a nonempty string is always truthy
于 2012-11-08T17:30:47.860 回答
5

这是最终的代码。有一个愚蠢的错误;我没有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';
}
于 2012-11-08T17:35:16.680 回答
3

在检查语句之前,您必须运行查询。就像您不打开盒子(即运行查询)就看不到盒子是否为空(即查询的结果)

用这个替换你的第 04 行

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

那么你的问题就迎刃而解了

有关mysqli的更多信息,请阅读这篇文章

您也可以考虑继续使用 PDO 语句。

希望这可以帮助

于 2012-11-09T02:23:45.880 回答
2

你还没有执行你的查询。首先执行您的查询,然后检查它的条件。

于 2012-11-08T17:48:34.380 回答
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';
}
于 2016-02-10T08:56:43.593 回答