tags:

views:

345

answers:

4

How can I check if mysql table field even exists ?

The column name is 'price' and I need to see if it exists.

Haven't understood really how the 'EXISTS' works...

Any examples or ideas ?

Thanks

A: 

Well, one way is to do:

select price from your_table limit 1

If you get an error:

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

then it does not exists.

Milan Babuškov
what kind of error do you mean? How can I check if it's an error then ?
Camran
If you get error #1054
Milan Babuškov
Yes, but how can I check for that in PHP? If (error) { etc } ???
Camran
See my answer above for PHP example
0A0D
+2  A: 

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

This should also help you:

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

Or you can do:

Show columns from table like 'string';

There has been a similar question posed on SO here before.

0A0D
A: 

You could get a description of all the column in your table.

desc your_table;

+1  A: 

Try:

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