スレッド表示 | フラット表示〕 全トピック 920 件中 412 番目 次≫ ≪前

DBエラーの取得

created: 2005-07-13 20:34 | modified: 2005-07-14 11:26 | reply: 4

[2368] DBエラーの取得

user: ユー | created: 2005-07-13 20:34
DBに該当のテーブルが存在しているか否かをPHPプログラムでチェックしたいのですが、方法がわかりません。
テーブル有無のチェック方法についてアドバイスよろしくお願いいたします。

プログラムではテーブルが存在するならデータをINSERTする、テーブルが存在しない場合はCREATE TABLEでテーブルを作成してからINSERT処理を行う処理を作ります。
reply: 2369 2370 返信 編集 削除

[2369] テーブルのチェック

user: ゆうじ | created: 2005-07-14 00:08
データベースは何をご利用でしょう。
私はMySQLしかわかりませんが・・・。
PHPマニュアルにご希望に沿うと思われるサンプルが載ってました。

●PHPマニュアル mysql_tablename より引用
http://www.php.net/manual/ja/function.mysql-tablename.php

function TableExists($tablename, $db) {

// Get a list of tables contained within the database.
$result = mysql_list_tables($db);
$rcount = mysql_num_rows($result);

// Check each in list for a match.
for ($i=0;$i<$rcount;$i++) {
if (mysql_tablename($result, $i)==$tablename) return true;
}
return false;
}

他のデータベースでもマニュアルを見ればヒントが得られると思います。
Parent: 2368  返信 編集 削除

[2370] Re.DBエラーの取得

user: ゆい | created: 2005-07-14 00:46
汎用的には、ダミーのセレクト文でクエリをかけます。
select * from target (limit 1);
レスポンスの対処を厳密に行いたい場合は、
処理系で変わりますが、
MySQLの場合だと、#1046がエラー番号として取得できます。
#1046 … table not found

MySQLの場合、テーブルリスト取得に問題があり、
latain1系以外の文字セットをテーブル名に利用すると、
"一部の"テーブル名が
リスト取得の機能では取得できません。
その機能を利用しているmysql_list_tablesも
当然のことながら取得できないテーブル名が存在します。
これには規則性がありますが、長文になるので省力します。

MySQLでCREATE TABLEためだけなら、
IF NOT EXISTSオプションを利用すればよいでしょう。

Postgresなら、管理テーブルから取得します。

#コメント入力欄広げてほしーい
Parent: 2368  reply: 2373 返信 編集 削除

[2373] ReRe.DBエラーの取得

user: ユー | created: 2005-07-14 10:15
コメントありがとうございます。
DBはpostgresを使用しています。

ダミーのセレクト文を実行するとエラーログにエラーが吐き出されてしまいます。
エラーログには吐き出さないで判定を行いたいと考えております。

管理テーブルから取得するとはどの様におこなうのでしょうか?

MySQL+PHPの関数mysql_tablenameと同様の機能を有する関数がありましたら教えていただけないでしょうか?
自分でも一通り探します。
Parent: 2370  reply: 2374 返信 編集 削除

[2374] 解決しました。

user: ユー | created: 2005-07-14 11:26
http://www.postgresql.jp/document/pg743doc/html/view-pg-tables.html

SELECT * FROM pg_tables WHERE tablename=テーブル名のSQLを実行して結果を取得する事で判定を行えました。
エラーログには吐き出されず処理できました。
Parent: 2373  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 412 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑