0

テーブルが mdb ファイルに存在するかどうかを確認する方法はありますか? PHPとADOdb接続を使用して接続しています。

これが私のコードです

$conn = new COM("ADODB.Connection");
$conn->open("DRIVER={Microsoft Access Driver (*.mdb)}; PWD=somepassword; DBQ=".dirname(__FILE__)."\filename.MDB;");
if (table exists){ \\ where i need the code to check
    $createtable = $conn->execute("CREATE TABLE $tblname (fieldsample CHAR(1))");
}else{
    $insertqry = $conn->execute("INSERT INTO $tblname (field) VALUES (value)");
}

構文を一日中ブラウジングしてきましたが、これまでに見たのはすべて VB と ASP です。

4

3 に答える 3

1

LIMIT 1 のテーブルで SELECT * を実行し、エラー/例外をキャッチするとどうなりますか?

(LIMIT は ACCESS では TOP と呼ばれます。)

次のようなものです:

SELECT TOP 1 * FROM <YOURTABLE>;

ACCESS はほとんどデータベースではないため、ACCESS に関しては実用的であることを学びました。

于 2012-07-27T09:43:44.107 に答える
1

COM が利用可能であれば、DAO への参照を追加し、TableDefsコレクションを確認します。それができないため、非表示のMSysObjectsテーブルにクエリを実行する必要があります。

SELECT COUNT(*) FROM MSysObjects WHERE Name = 'myTable' AND Type = 1

(このシステム テーブルの詳細: Using MSysObjects )

編集: この質問によれば、ADO を使用してスキーマ データにアクセスできます。これにより、テーブルが存在するかどうかを判断できます。

$rs_meta = $conn->OpenSchema(20, array(Null, Null, Null, "TABLE")); 
于 2012-07-27T09:46:34.427 に答える
0
$createtable = $conn->execute("CREATE TABLE $tblname (fieldsample CHAR(1))");

実際にクエリを変更して、必要な結果を得ることができます。

$createtable = $conn->execute("CREATE TABLE IF NOT EXISTS $tblname (fieldsample CHAR(1))");

このクエリがまだ存在しない場合は、実行 (テーブルの作成) されます。既に存在する場合、このクエリは実行されません。

于 2012-07-27T09:46:22.477 に答える