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 ответов

Решение

Вот окончательный код. Была глупая ошибка; Я не пользовалась 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';
}

Вы никогда не выполняете запрос, вместо этого ваше условие - строка запроса:

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

Вы должны выполнить свой запрос, прежде чем проверять утверждения с ним. Это похоже на то, что вы не можете увидеть, является ли поле пустым или нет (т.е. результат вашего запроса), не открывая окно (т.е. запустив запрос)

Замените свою строку 04 этим

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

Тогда ваша проблема будет решена

Для получения дополнительной информации о MySQL, пожалуйста, прочитайте эту статью

Вы могли бы также перейти к заявлениям 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';
}
Другие вопросы по тегам