Sometimes, you need to check if a field exists in a table and if it doesn’t, you need to add it to the table and ensure that its there. Below is a snippet which you can use a reference for checking whether a field/column exists in a MySQL database table.
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++) {
$field_array[] = mysql_field_name($fields, $i);
}
if (!in_array(‘list_id’, $field_array)) {
mysql_query("ALTER TABLE `tablename` ADD `fieldname` INT(11) NOT NULL DEFAULT ’1′;");
}
I hope that you find this useful.
The code above should give you a good idea of how to do it.








November 10th, 2008 at 4:39 am
$tableFields = mysql_list_fields(“databasename”, “tablename”);
has to be changed to
$fields = mysql_list_fields(“databasename”, “tablename”);
January 28th, 2009 at 1:38 am
is it not possible to check this inside the mysql-statement?
if exists tablename.fieldname ALTER TABLE `tablename` ADD `fieldname` …
or so?
October 27th, 2009 at 9:11 pm
You can try this:
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’table’ AND column_name=’qwerty’) BEGIN SELECT * FROM table ORDER BY qwerty END
January 30th, 2010 at 11:20 pm
mysql_list_fields() function is deprecated. PHP manual recommends use
“SHOW COLUMNS FROM tablename” MySQL query instead.
Example from manual:
0) {
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>
April 30th, 2010 at 5:08 am
function findColumn($database, $tableName, $columnName){
$result = $database->query(“select * from “.$tableName.”;”);
while ($retrievedColumn=$result->fetch_field()){
if ($retrievedColumn->name==$columnName){
return true;
}
}
return false;
}
June 29th, 2010 at 1:02 am
thnxx
but yes mysql_list_fields is indeed depreciated..
March 11th, 2011 at 5:01 pm
[...] MySQL : Check if field exists | Lost-In-Code [...]