• ベストアンサー
  • 暇なときにでも

SQLiteにてテーブル一覧を取得したい

SQLiteにてテーブル一覧を取得したい PHPにてSQLiteを使って勉強中なのですが、 sqlite_openでファイルを読み込み クエリーを投げて、そのファイルの中にあるテーブル一覧を取得したいのですが、 どのようにすれば一覧が取れるでしょうか? sqlite_query($sqlite, '.tables');だと構文エラーになってしまいますし、 execのような物から取ろうとするとかなり複雑なロジックになってしまいます。

共感・応援の気持ちを伝えよう!

  • PHP
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • buraru
  • ベストアンサー率54% (12/22)

SELECT * FROM sqlite_master WHERE type='table' でどうですか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

返信が遅れましたが うまく取得する事が出来ました。 ありがとうございます。

関連するQ&A

  • SQLserver2005 テーブル一覧の取得

    SQLserver2005 テーブル一覧の取得 知っている方には、基礎すぎて申し訳ないのですが、 添付画像のテーブルを選択して、SQLペインを表示させて そこに、  EXEC sp_tables と記述して、テーブル一覧を取得しようとして「!」マークを 押して、sp_tablesを実行させようとした所、下記のようなエラーメッセージが 出てしまいます。 EXEC SQL コンストラクトまたはステートメントはサポートされていません。 書き方が悪いのか、ストアドプロシージャの実行場所が悪いのかよく分かりませんが うまく行きません。 sp_tablesを使用して、テーブル一覧を取得する方法をどなたか教えて下さい。 よろしくお願いします。

  • SQLiteでカラム情報の取得ってできるんですか?

    SQLiteを使ってみようと思い試しているのですが、カラム名と属性情報の 一覧を表示するコマンドが分かりません。 調べてもどうも見つからないので教えていただきたいと思います。 MySQLやOracleなんかでしたら、desc table名; という構文でカラム情報を 取得することができますが、SQLiteではできないようです。 .helpコマンドで調べてみても、テーブル一覧は見つかりますがカラム一覧は出てきません。 ご存知の方教えていただけると助かります。

  • SQLiteのデータベースについて

    PHP初心者です。以下のSQLiteより作成するデータベースについて教えてください。 $DB = sqlite_open('db1.db'); $sql="create table tables(id integer ,name,texts)"; $result=sqlite_query($db,$SQL); 上記、プログラムにより、同ディレクトリに、db1.dbが作成されますが、このデータベース情報はどのようにして、閲覧するのでしょうか(MS-ACCESS、SQLのように簡単に閲覧できないのか)。主キーやテーブルの名前またはフィールドの名前の変更、データ一覧閲覧などどのようにするのでしょうか。 環境は、Windows環境で、PHP4を使用しております。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • sqlite_open()なんですが

    PHPで <?php $db=sqlite_open("rensyuu.sqlite",0666,$err); $row=sqlite_query($db,"select count(*) from sqlite_master where name='tb1';"); $kotae=sqlite_fetch_single($row); print($kotae); sqlite_close($db); ?> と打ったものを実行したら、 Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in.... というエラーになりました。 どうもsqlite3で作ったのが原因っぽいんですがなにか ご存知でしたら教えていただけませんか。

  • sqlite+phpでのテーブル作成

    こんばんは php+sqlite+pdoで掲示板を作ろうと思っているのですが - $db = new PDO('sqlite:test555.db','', ''); $query = "CREATE TABLE テーブル名 (テーブル内容)"; $db->query($query); //以下掲示板表示処理など - とした場合、すでにテーブルが存在していてもエラーが出ずに掲示板のデータを表示してしまいます。 掲示板の機能としてはこれで動いているので問題ないのですが、プログラム的に掲示板にアクセスするたびにCREATE TABLEを実行しても良いものなのでしょうか? 出来ればテーブルが存在しない場合のみにCREATE TABLEを実行したいのですがその場合はどのように書けばいいのでしょうか?

    • ベストアンサー
    • PHP
  • (PHP 4.4.8) sqlite_open関数の引数を相対パスにしたいのですが上手くいきません。

    PHP 4.4.8 SQLite Library 2.8.14 の環境で、 sqlite_open関数の引数を相対パスにしたいのですが上手くいきません。 (例)create_db.php <?php $db = sqlite_open("../db_test"); //←ここでエラーが出ます。 $query = "CREATE TABLE tbl_test(id,aaa,bbb)"; $result = sqlite_query($db,$query); sqlite_close($db); ?> ネットで調べた所、sqlite_open()は引数に「相対パス(or絶対パス)」を入れることは可能であり、 かつ、「../db_test」が無い場合、作られる仕組みということです。 エラー表示: Warning: sqlite_open() [function.sqlite-open]: unable to open database (...以下略) ちなみに、上記のコードにおいて、 「../db_test」ではなく、「db_test」として同じことをすると、上手くいきます。 つまり、スクリプトファイル(create_db.php)と同階層にファイルを作成することはできるのです。 $db = sqlite_open("db_test");   //← ○:ファイル作成成功 $db = sqlite_open("../db_test"); //← ×:ファイル作成失敗 どなたかご助言をよろしくお願い致します。

    • ベストアンサー
    • PHP
  • yahooウィジェットのSQLiteに関して

    どうしてもわからず、質問させてください。 INSERTの所で 1 near "[i]" :syntax error と出てしまいます。 配列にはちゃんとデータが入っていることを確認しました。 どこがおかしいのかお分かりになる方すいませんが、お願いします。 またyahooウィジェットのSQLiteはトランザクションは使えるのか知っている方いましたら合わせてお願いいたします。 ▼ソースは以下のようなものです var db = new SQLite(); //オープン db.open( "オーブンファイル名" ); //テーブル存在確認 var result = db.query( "SELECT * FROM sqlite_master WHERE type='table' AND name='テーブル名'" ); if ( result.getRow() == null ) { result.dispose(); db.exec( "CREATE TABLE テーブル名(id int(10),name varchar(255))" ); FileRead( "ファイル読み込み" ); for (var i in lineArray) { alert(lineArray[i]); db.exec( "INSERT INTO テーブル名(id, name) VALUES(i, lineArray[i])" ); } } db.close;

  • PHPでMySQLテーブルロック一覧取得

    PHPでMySQLテーブルロックされている一覧を取得したいですがどのようにすれば良いかご教授願います。 Web検索で調べるとロック状態はmysql_list_processesや、show processlistでも試してみましたが、思うような結果は得られませんでした。正常には動作していますが、欲しいデータが取り出せないですす。。。 単純に、現在ロックしているテーブル名(レコードロックは不要です。)を一覧で出力させることはできないのでしょうか? PHPから実施できるやり方をご教授頂けると幸いです。 -------Test Program()--------- <?php $link = mysql_connect('localhost', 'login_id', 'login_pass'); mysql_select_db('db_name'); mysql_query('LOCK TABLES table1 WRITE'); mysql_query('INSERT INTO table1 SET field1 = "test", field2 = "1"'); //$result = mysql_list_processes($link); 以下のSQL文とも入れ替えて試しました。 $result = mysql_query('show processlist'); while ($row = mysql_fetch_assoc($result)){ printf("%s %s %s %s %s %s %s %s\n", $row["Id"], $row["User"], $row["Host"], $row["db"], $row["Command"], $row["Time"] , $row["State"], $row["Info"]); } mysql_free_result($result); mysql_query('UNLOCK TABLES'); ?>

    • ベストアンサー
    • MySQL
  • SQLITEの構築について

    現在、レンタルサーバーでSQLITEを使おうと思い、 <html> <head><title>PHP TEST</title></head> <body> <?php $link = sqlite_open('test.db', 0666, $sqliteerror); if (!$link) { die('接続失敗です。'.$sqliteerror); } print('接続に成功しました。<br>'); // SQLiteに対する処理 sqlite_close($link); print('切断しました。<br>'); ?> </body> </html> と、スクリプトを組んだのですが、ブラウザでアクセスすると Call to undefined function sqlite_open()という、エラーが出てしまいます。これがsqlite_open()関数が定義されていないという意味はわかるのですが、何故このエラーが表示されるのか理解できません。 レンタルサーバーではSQLITEが使えるとかかれており、またphpのバージョンも5.1.6と、SQLITEが標準でバンドルされているはずなんですが、何もしようともcall to undefined ~~  というエラーが出てしまいます。 レンタルサーバー内でこのエラーを出さず、sqliteを使えるようにするにはどうしたらよいでしょうか?ご教授お願いします。 また、余談かもしれませんが、自分なりに、検索し、調べた結果、php.iniというファイルを作成し display_errors = On extension=php_pdo_sqlite.dll extension=php_pdo.dll extension=php_sqlite.dll と、書き込んだファイルをサーバーにあげたのですが、無意味でした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PerlでMySQLのテーブル一覧取得

    PerlでMySQLのデータベース内のテーブル一覧を取得することはできますか? 自分で以下の様なサブルーチンを作りましたが、返り値に何も入っていませんでした。 コマンドラインでもshow tables;で確認したのでテーブルは確実に存在します。 接続も showでfetchrow_arrayなどは使えないのでしょうか? またselect文でテーブル一覧を取得する方法がありましょうか? Error: failed to connect to DB.とは出てこないので、接続も成功しています。 sub mysql_tablesGet{ my @data=@_; my $db_id = $data[0]; my $db_password = $data[1]; my $dbh = DBI->connect("dbi:mysql:dbname=".$ftp_id.";host=$mysql_host", $db_id,$db_password) or die "$!\n Error: failed to connect to DB.\n"; my $sth = $dbh->prepare("show tables;"); $sth->execute; my @response; my $i=0; while(my @var = $sth->fetchrow_array){ my ($table_name) = $var[0]; $response[$i] = $table_name; $i++; } $dbh->disconnect; return @response; } MySQLのログはこんなのが出ています。 130406 17:11:44 70 Connect test2@192.168.11.22 on test2 70 Query set autocommit=1 特にエラーは出ていないので、show tables;は成功していると思います。

    • ベストアンサー
    • Perl