Как проверить, существует ли столбец таблицы mysql?

Как проверить, существует ли поле таблицы mysql?

Имя столбца – «цена», и мне нужно посмотреть, существует ли он.

Не поняли, как работает «EXISTS» …

Любые примеры или идеи?

благодаря

Related of "Как проверить, существует ли столбец таблицы mysql?"

В PHP:

$fields = mysql_list_fields('database_name', 'table_name'); $columns = mysql_num_fields($fields); for ($i = 0; $i < $columns; $i++) {$field_array[] = mysql_field_name($fields, $i);} if (!in_array('price', $field_array)) { $result = mysql_query('ALTER TABLE table_name ADD price VARCHAR(10)'); } 

Это также должно помочь вам:

 IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TEST' AND COLUMN_NAME = 'TEST_DATE') BEGIN ALTER TABLE TEST ADD TEST_DATE DATETIME END 

Или вы можете сделать:

 Show columns from table like 'string'; 

С таким же вопросом, как и раньше, здесь был аналогичный вопрос.

Пытаться:

 IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TEST' AND COLUMN_NAME = 'Price') BEGIN -- do something, eg -- ALTER TABLE TEST ADD PRICE DECIMAL END 

Другой способ сделать это в PHP:

 $chkcol = mysql_query("SELECT * FROM `table_name` LIMIT 1"); $mycol = mysql_fetch_array($chkcol); if(isset($mycol['price'])) echo "Column price exists! Do something..."; 

Ну, один из способов сделать:

 select price from your_table limit 1 

Если вы получите сообщение об ошибке:

 #1054 - Unknown column 'price' in 'field list' 

то он не существует.

Я нашел это очень полезным. Он перечислит все таблицы с именем этого столбца.

 SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%the_column_name%' 

ну вот функция, чтобы проверить, существует ли конкретный столбец или нет.

 public function detect_column($my_db, $table, $column) { $db = mysql_select_db($my_db); //select the database $sql = "SHOW COLUMNS FROM $table LIKE '$column'"; //query $result = mysql_query($sql); //querying if(mysql_num_rows($result) == 0) //checks the absence of column echo "column $column doesn't exist !"; // write your code here! else echo "column $column exists!"; } выполнение public function detect_column($my_db, $table, $column) { $db = mysql_select_db($my_db); //select the database $sql = "SHOW COLUMNS FROM $table LIKE '$column'"; //query $result = mysql_query($sql); //querying if(mysql_num_rows($result) == 0) //checks the absence of column echo "column $column doesn't exist !"; // write your code here! else echo "column $column exists!"; } 

хорошо, если вы разрабатываете рамочную работу, то эта функция может прийти вам на помощь. Эта функция проверяет наличие столбца, когда флаг $ установлен на '1' и отсутствие столбца, когда флаг $ установлен на '0'.

 public function detect_column($my_db, $table, $column, $flag) { $this->select_db($my_db); //select the database $sql = "SHOW COLUMNS FROM $table LIKE '$column'"; $result = mysql_query($sql); if(mysql_num_rows($result) == $flag) return true; else return false; } 

Вы можете получить описание всего столбца в таблице.

desc your_table;

Я просто сделал что-то подобное, используя эту функцию для WordPress, это для таблиц обновлений, на которых есть новые chnages

 public function alterTable() { $table_name = $this->prefix . $this->tables['name']; $select = "select * from `{$table_name}` where 0=0 limit 1;"; $query = $this->db->get_results($select, ARRAY_A); if (isset($query[0]) && !key_exists('adv', $query[0])) { $sql = "ALTER TABLE `{$table_name}` ADD `me` INT NULL DEFAULT NULL ;"; $this->db->query($sql); } 

}