Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查mysql表列是否存在?_Php_Mysql - Fatal编程技术网

Php 如何检查mysql表列是否存在?

Php 如何检查mysql表列是否存在?,php,mysql,Php,Mysql,如何检查mysql表字段是否存在 列名是“price”,我需要查看它是否存在 还没有真正理解“存在”是如何运作的 有什么例子或想法吗 谢谢好吧,一种方法是: select price from your_table limit 1 如果出现错误: #1054 - Unknown column 'price' in 'field list' 那么它就不存在了 在PHP中: $fields = mysql_list_fields('database_name', 'table_name'); $

如何检查mysql表字段是否存在

列名是“price”,我需要查看它是否存在

还没有真正理解“存在”是如何运作的

有什么例子或想法吗


谢谢

好吧,一种方法是:

select price from your_table limit 1
如果出现错误:

#1054 - Unknown column 'price' in 'field list'
那么它就不存在了

在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)');
}
或者你可以:

Show columns from table like 'string';

以前也有人提出过类似的问题。

您可以获得表中所有列的说明

desc您的_表

尝试:

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

在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 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!";
}
如果你正在设计一个框架,那么这个函数可能会对你有所帮助。当$flag设置为“1”时,此函数检查是否存在列;当$flag设置为“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;
} 

我刚刚用Wordpress的这个函数做了类似的事情,这个函数用于更新有新技术的表

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

}

您指的是名为“价格”的列?您指的是哪种错误?那么我如何检查它是否是一个错误呢?请参见上面我对PHP示例的回答:
SELECT*FROM INFORMATION\u SCHEMA.COLUMNS
在MySQL中工作吗?@Benubird:不,你在说什么?我不会改变3年前的答案。mysql扩展已被弃用。答案应该更新。不,旧问题的答案有助于寻找答案的人。继续为我说的老问题添加更好的答案。如果我们不应该“复活”旧问题,那么mods就不应该关闭重复的问题。
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);
    }