通过php检查Mysql表中是否存在列

时间:2014-05-07 09:09:02

标签: php mysql

我创建了mysql表,并在那里添加了一些列。

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

像这样:

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

是否可以这样做?

非常感谢您的时间:)

9 个答案:

答案 0 :(得分:28)

$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

注意: - 不建议使用mysqliPDO

来使用mysql_ *

答案 1 :(得分:1)

假设您要查找已下达至少一个销售订单的客户,则可以按以下方式使用EXISTS运算符:

SELECT customerNumber,
         customerName
FROM customers
WHERE EXISTS
    (SELECT 1
    FROM orders
    WHERE orders.customernumber = customers.customernumber);

对于客户表中的每一行,查询都会检查订单表中的customerNumber。

如果出现在customers表中的customerNumber存在于orders表中,则子查询将返回第一匹配行。结果,EXISTS运算符返回true,并停止扫描订单表。否则,子查询将不返回任何行,并且EXISTS运算符将返回false。

要获取尚未下任何销售订单的客户,请使用NOT EXISTS运算符,如下所示:

SELECT customerNumber,
         customerName
FROM customers
WHERE NOT EXISTS
    (SELECT 1
    FROM orders
    WHERE orders.customernumber = customers.customernumber);

答案 2 :(得分:0)

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

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

答案 3 :(得分: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?

答案 4 :(得分: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

答案 5 :(得分:0)

在php中运行此查询并检查行数&gt; 0: - DESC tablename'%columns_name%'

答案 6 :(得分:0)

好吧,我在这个问题上花了5个小时来仔细研究每个(有时是令人费解的)StackOverflow答案,但从未找到可行的答案,答案是如此简单,以至于您会踢自己(就像我一样):

php 7

$mysqli = new mysqli($mysql_url, $mysql_user, $mysql_password, $db_name);

$column_name = "my_column";
$table_name = "my_table";

if ($mysqli->query("SELECT $column_name FROM $table_name")){
        //my_column exists in my_table
    }
else{
        //my_column doesn't exist in my_table
}

数据库101 ....

答案 7 :(得分:0)

这很简单,但对我有用:

1)从所需表中全选。

$qry = "SELECT * FROM table";

2)带来结果并验证该字段是否存在。

if( $result = $mysqli->query($qry)  &&  isset($result['field_you_want']) ){
    //Exists
}else{
    //Doesn't exists
}

答案 8 :(得分:0)

创建函数

function CheckIfColumnExist($string) {
global $sqlConnect;
if (empty($string)) {
    return false;
}
$query = mysqli_query($sqlConnect, "SELECT $string FROM `table_name`");
if (mysqli_num_rows($query) > 0)
{
$fetched_data = mysqli_fetch_assoc($query);
return true;
}
}

在 PHP 中

$string = $_POST['string'];
if(CheckIfColumnExist($string) == false){
echo "column doesn't exist!."; 
}else{
echo "column is existing!.";
}