2014-05-07 83 views
9

我创建了mysql表,并且在那里放了一些列。检查列表是否存在于Mysql表中通过php

现在我想通过php检查数据库中是否存在某个列。

像这样:

if (column exist){ 
echo "Column in table is available." 
} 
else{ 
echo "Column doesnt exist."; 
} 

是否有可能做到这一点?

一个您的时间:)

+0

如何创建查询伴侣吗? – user3611408

+0

可能重复的[MySQL,检查列中是否存在SQL表](http://stackoverflow.com/questions/3395798/mysql-check-if-a-column-exists-in-a-table-with -sql) – lighter

回答

24

很多感谢的尝试

$result = mysql_query("SHOW COLUMNS FROM `table` LIKE 'fieldname'"); 
$exists = (mysql_num_rows($result))?TRUE:FALSE; 
if($exists) { 
    // do your stuff 
} 

更多: - MySQL, Check if a column exists in a table with SQL

注: - mysql_ *是不推荐使用mysqliPDO

+1

mysql_ *已弃用 – Daan

+0

谢谢@Daan我正在更新我的答案 –

+0

@Daan您应该将OP指向OP,因为OP已在'mysql'中标记了该问题。 –

0

你可以使用mysql_list_fields和mysql_num_fields来获取表格的列

$fields = mysql_list_fields('database_name', 'table_name'); 
$columns = mysql_num_fields($fields); 
+0

看起来像这些方法在当前的PHP版本中折旧 – atwellpub

0

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

退房这个问题:How can I check if mysql table column even exists?

0
If your database is MySQL then, you can use mysql_field_name() and mysql_fetch_field() function in php. 

$res = mysql_query('select * from customer', $link); 

echo mysql_field_name($res, 0); // print cust_id 
echo mysql_field_name($res, 1); // print cust_name 
echo mysql_field_name($res, 2); // print cust_age 
0

运行此查询在PHP和检查,如果行数> 0: - DESC表名 '%columns_name%'