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