phpで変数によってテーブル名を変える方法

このQ&Aのポイント
  • phpで変数によってテーブル名を動的に作成する方法を教えてください。
  • 変数の内容に応じてテーブル名を変えるプログラムをphpで実装したいです。
  • 初心者ですが、テーブル名を変数に基づいて作成するためのphpのプログラムを教えてください。
回答を見る
  • ベストアンサー

phpでテーブルを作る際変数によってテーブル名を変えたいです。

phpでテーブルを作る際変数によってテーブル名を変えたいです。 文字列$nama(tarou,jirou等)、 整数$iの中身によって作るテーブル名が tbl_tarou_1、tbl_tarou_2、tbl_jirou_5と変わるプログラムを作りたいのです。 当方初心者なので以下のプログラムを改変するような形でお答えいただけないでしょうか。 回答よろしくお願いいたします。 $db = sqlite_open("db"); $query = "CREATE TABLE tb(xyz VARCHAR(20))"; $result = sqlite_query($db,$query_statics); sqlite_close($db);

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

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

  • ベストアンサー
回答No.1

 SQL文は基本的にPHPから見ればただの文字列データにしか過ぎないので、普通に文字列操作でSQL文を作ると考えればいいです。 > $query = "CREATE TABLE tb(xyz VARCHAR(20))";  テーブル名がtbで、この部分を可変にし、  文字列データが$nama = "tarou";  $iが任意の整数だとすると、 $table_name = sprintf("tbl_%s_%i", $nama, $i); $query = "CREATE TABLE ".$table_name."(xyz VARCHAR(20))";

mohumoso
質問者

お礼

丁寧な説明のおかげでできました。 回答ありがとうございました。

関連するQ&A

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

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

    • ベストアンサー
    • PHP
  • プロシージャで変数をテーブル名として使用したい

    いつもお世話になります。 以下のような感じで変数をテーブル名として参照したいのですが、できますでしょうか。 --ここから create proc proc_test @tbl_name varchar(30) as select count(*) from [dbo].[@tbl_name] --ここまで ver:SQL Server2000 宜しくお願いいたします。

  • PHP 認証システム

    PHPでIDとPWDを入力してログインする認証ページを作ろうとしています。環境はPHP-5.1.6、サーバ:Apache2.0.63、データベース:SQLiteです。 まず、DBを作ろうとしているのですが一部分がなんて打っていいか調べても解らなかったので質問させて頂きます。 <HTML><BODY> <?php if($db = sqlite_open("db_ninshou")){ $query = "CREATE TABLE tbl_ninshou(ID ???, PWD ???)"; $result = sqlite_query($db, $query); print "db_ninshouを作成しました。"; }else{ die("データベースに接続できません。"); } sqlite_close($db); ?> </BODY></HTML> ???部分に何を打っていいかわかりません。IDは英数字の組み合わせの7文字。PWDは3文字以上10文字以下の英数字にしたいと思っています。PWDなどに適した変数が解らないのでどなたかご教授ください。よろしくお願いします。

    • ベストアンサー
    • 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;

  • [Warning]が出るのですが、何故かわかりません。

    [Warning]が出るのですが、何故かわかりません。 <html> <body> <?php if($db = sqlite_open('db_ehon')){ $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (1, 'a', 1380)"; $result = sqlite_query($db, $query); $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (2, 'b', 1580)"; $result = sqlite_query($db, $query); $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (3, 'c', 1680)"; $result = sqlite_query($db, $query); $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (4, 'd', 1680)"; $result = sqlite_query($db, $query); print "「db_ehon」を作成しました。"; }else{ die("データを登録できません。"); } sqlite_close($db); ?> </body> </html> ■表示______________ Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 13 Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 16 Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 19 Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 22 「db_ehon」を作成しました。 ”db_ehon”は同じディレクトリに作成されます。 初歩的な事のような気がしますが、分るかたお願い致します。

    • ベストアンサー
    • PHP
  • SQLiteのテーブル名を変更したい

    SQLiteで既存のテーブル名を変更し、テーブルのバックアップにしたいと考えています (後に元テーブル名で新しくCreate Tabelをします) 少し(情報の少ない)マニュアルを見ましたが 方法(それを実行させるSQL)が見つけられません アドバイスをよろしくお願いいたします。 あるいは、DB内でテーブルをコピーする方法があるならば それで代用できるかもと考えています。

  • (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
  • PHP ハイパーリンク

    PHPで条件があった場合次のページに、とべるようにしたいのですが何と記述していいか調べてもいまいち解らないので質問させて頂きます。 <?php $ID = $_POST['ID']; $PWD = $_POST['PWD']; if($db = sqlite_open('db_ninshou')){ $query = "SELECT ID, PWD FROM tbl_ninshou WHERE ID = '$ID' AND PWD = '$PWD'"; $result = sqlite_query($db, $query); if($info = sqlite_fetch_array($result)){ print "認証に成功しました。下記URLから講義の登録を行ってください。\n"; print ここで次のページにとべる命令をしたのですが解りません。; }else{ print "認証に失敗しました。再度入力してください。"; } }else{ die("DBエラー"); } sqlite_close($db); ?> HTMLなら <A HREF = "URL">~</A>というふうに記述すればいいと思うのですが。リンクを貼る記述の仕方か、もしくは条件に当てはまったら自動的にページにとべるような命令の仕方を探しています。説明が下手で申し訳ありませんが・・・よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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
  • Accessのテーブル名/クエリー名を一括変換する

    Accessのテーブル名/クエリー名を一括変換する方法は無いのでしょうか?どなたか分かる方教えてください。 例) テーブル名「tbl_goo1」「tbl_goo2」「tbl_goo3」が存在するとして、 「_」(アンダースコア)を取り除きたいという場合 「tbl_goo1」⇒「tblgoo1」 「tbl_goo2」⇒「tblgoo2」 「view_goo3」⇒「viewgoo3」 よろしくお願いします。

専門家に質問してみよう