Mysql tablo sütunu bile var olmadığını nasıl kontrol edebilirim?

7 Cevap php

Mysql tablo alan bile var olmadığını nasıl kontrol edebilirim?

Sütun adı 'fiyat' olduğunu ve eğer varsa görmek gerekir.

'Var' nasıl çalıştığını gerçekten anlamış değil ...

Herhangi örnekleri veya fikirler?

Teşekkürler

7 Cevap

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

Bu da size yardımcı olacaktır:

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

Ya da yapabilirsiniz:

Show columns from table like 'string';

Önce SO here üzerine yöneltilen benzer bir soru olmuştur.

Deneyin:

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 bunu yapmanın başka bir yolu:

$chkcol = mysql_query("SELECT * FROM `table_name` LIMIT 1"); 
$mycol = mysql_fetch_array($chkcol); 
if(isset($mycol['price'])) 
  echo "Column price exists! Do something...";

Peki, tek yönlü yapmak için:

select price from your_table limit 1

Eğer bir hata alırsanız:

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

o da mevcut değil.

Ben bu çok yararlı buldum. O sütun adı tüm tabloları listeler.

SELECT table_name, 
       column_name 
FROM   information_schema.columns 
WHERE  column_name LIKE '%the_column_name%' 

Eğer tablodaki tüm sütun bir açıklama alabilir.

desc your_table;

Burada da belirli bir sütun var olup olmadığını kontrol etmek için bir işlevdir.

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!";
}

Bir çerçeve iş tasarımı ise de, daha sonra bu fonksiyon senin yardımına gelebilir. $ Bayrak '1 've '0 $ bayrak ayarlanır sütunun yokluğu' ayarlanır sütunun varlığı için bu fonksiyon kontrolleri.

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