mysqlテーブルフィールドが存在するかどうかを確認する方法はありますか?mysqlテーブルの列が存在するかどうかを確認する方法はありますか?
カラム名は「価格」で、それが存在するかどうかを確認する必要があります。
は... 'EXISTSの作品は本当にどのように
任意の例やアイデアを理解されていないことがありますか?
おかげ
mysqlテーブルフィールドが存在するかどうかを確認する方法はありますか?mysqlテーブルの列が存在するかどうかを確認する方法はありますか?
カラム名は「価格」で、それが存在するかどうかを確認する必要があります。
は... 'EXISTSの作品は本当にどのように
任意の例やアイデアを理解されていないことがありますか?
おかげ
:
$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';
同様の質問が前SO hereにあり提起されてきました。
の私の答えを参照してください 'SELECT * FROM INFORMATION_SCHEMA.COLUMNS'はMySQLで動作しますか? – TheVillageIdiot
@TheVillageIdiot:http://dev.mysql.com/doc/refman/5.0/en/columns-table.html –
おかげです!ハラー、新しいことを学んだ – TheVillageIdiot
まあ、一つの方法は、実行することです。
select price from your_table limit 1
あなたがエラーを取得する場合:
#1054 - Unknown column 'price' in 'field list'
、それが存在しません。 PHPで
どのようなエラーがありますか?それがエラーであればどうすれば確認できますか? –
エラー#1054 –
はい、それがPHPで確認できますか?(エラー){etc}なら??? –
テーブルのすべての列の説明が表示されます。
desc your_table;
試してみてください。
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...";
いいえ、古い質問への回答は探している人に役立ちます。私が言う古い質問に、より良い答えを加え続けてください。古い質問を「復活」させることを想定していない場合、改造者は繰り返し質問を終わらせるべきではありません。 –
これは、行のない表に対しては機能しません。 – jaycode
私は、これは非常に有用であることが判明。その列名を持つすべてのテーブルが一覧表示されます。
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'に設定されているときに列がないことをチェックします。
私はWordpressのために、この機能を使用してこのような何かをやっ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;
}
、その上に新しいchnagesを持っている更新テーブルのため、この
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);
}
}
は、あなたが「価格」という名前の列を意味ですか? – CBFraser
あなたは正しいです... –