我正在尝试通过检查列是否存在来添加列。如果没有,它应该通过下面的代码给出它已经存在的消息。
$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';
}
但它不会添加任何列并直接显示该列已存在的消息。
答案 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';
}