• ベストアンサー
  • 困ってます

SQLiteでカラムを追加

PHP初心者です。今SQLiteでDBを構築しています。 現状あるSQLiteを使ったPHPプログラムで、データの読み書きをしています。 レンタルサーバを使っていて、テーブル:test カラム:deta1,deta2,deta3 があります。 で今回カラム deta4を新しく追加したいのですが、sqliteの場合はどうすればいいのでしょうか。 ネットで調べてみましたが、コマンドプロンプトを使うようなものしか出てきません。 初心者の為、全く見当がつきません。宜しくお願い致します。

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

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.2
  • shimix
  • ベストアンサー率54% (865/1590)

ANo.1です parse errorは文法上のエラーなので、phpの文法として見直してもらうしか・・・ たとえばSQLiteであれば <?php $db = new SQLiteDatabase('sqlite.db'); $sql = 'ALTER TABLE nikki ADD [biko] column_definition'; $db->queryExec($sql); SQLite3を使っているのであれば <?php $db = new SQLite3('sqlite3.db'); $sql = 'ALTER TABLE nikki ADD [biko] column_definition'; $db->exec($sql); だけですよね。 #エラー処理は手抜き。SQL文の内容は検証してません(汗 #sqlite_openやsqlite_queryを使うとしてもほぼ同じですよね

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

質問者からのお礼

ありがとうございます。 結局ローカルにダウンロードして、ファイルを更新する方法にしました。 どうも難しくって、うまくいってるのか、いってないのかわからないのですが。。。 地道にがんばろうと思います。 ありがとうございました。

その他の回答 (1)

  • 回答No.1
  • shimix
  • ベストアンサー率54% (865/1590)

>ネットで調べてみましたが、コマンドプロンプトを使うようなものしか出てきません。 コマンドプロンプトで実行するSQL文を、phpスクリプトでqueryExecすればいいと思います。

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

質問者からのお礼

ありがとうございます。 コマンドプロンプトで実行するSQL文を、phpスクリプトに書く訳ですね。。。 因みに queryExec の部分がちょっとわからないのですが、 ご教授頂いたものを元に頑張ってみますm(__)m

質問者からの補足

いろいろ試してみたのですが。。。 PHPにて以下のスクリプトを書いてみたのですが。。。 ALTER TABLE nikki ADD [biko] column_definition; 下記のエラーになってしまいます。。。 Parse error: syntax error, unexpected T_STRING in /xxx/users/0/xxx/web/xxx/xxx/xxx.php on line 3 PHPスクリプトでALTER TABLEを書くには、どのように書いたらいいのでしょうか。 初心者の為、理解できなく申し訳ありません。

関連するQ&A

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

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

  • sqliteを操作する

    ローカルではなく、レンタルサーバー上にあるSQLiteにフィールドを 追加したいと思いましたが、PHPMyAdminのようなGUIがないので、 作業が止まってしまいました。 どうやってレンタルサーバー上にあるテーブルを操作できるのでしょうか? PHPを使ってなら追加できるのですが、GUIやコマンドで操作できない のでしょうか?

  • 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
  • sqliteへのデータ追加

    sql文で質問です。接続は1-29の表示を確認済み。 掲示板を作る練習をしているのですが、とりあえずpostなどのユーザーから受け取り値をdbに保存・表示する前に、自分で保存(カラムは左から順にid,name,sexになっていてidの1~29は埋まっている状態です。)・表示してみようと思いtest.dbのhumanテーブルに「データの追加」と表記している部分をテーブルに書き込み表示したいのですが、エラーは表示されないもののid30番にデータの追加ができておらず困っています。 データを追加する方法を教えてください。 <?php // 変数の初期化 $db = null; $sql = null; $res = null; $row = null; $db = new SQLite3("test.db"); // データの追加 $sql = 'INSERT INTO human( id, name, sex, ) VALUES ( 30, "吉川", "男", )'; // データの取得 $sql = 'SELECT * FROM human WHERE id BETWEEN 1 AND 50;'; $res = $db->query($sql); while( $row = $res->fetchArray() ) { echo '<ul>'.'<li>'. $row[0] . $row[1] .$row[2].'<li>'.'<ul>';} ?>

  • 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でのDateTimeの扱い

    SQLiteのデータベースにphpで値を保存したいのですが、カラムのタイプがdatetimeだと上手くいきません。 現在の時刻をSQLiteに書き込むということをしたいです。 カラムのタイプをdatetimeからtextに変更するのは避けたいので、下のphpを変更して書き込めるようにするにはどうすれば良いのでしょうか? 詳しい方よろしくお願いします。 SQLite DB ---- CREATE TABLE "dt" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,"REGIST" DATETIME) ---- PHP ---- $sqlite = 'SQLiteへのパス'; $db = new PDO($sqlite); $now = date('Y-m-d H:i:s'); $nfe = $db->prepare('insert into dt(REGIST) values(?)'); $nfe->execute(array($now)); ----

  • SQLite3にPHPでデータの更新・追加する方法

    PHP初心者です。 すみません、どなたか教えてください。 SQLite3 のデータベース内にあるテーブルに、同一データがすでにある場合はそのデータを更新、無い場合はデータを追加したいのですが、PHPではどのように書けばよいのでしょうか? 具体的には、hoge.dbの中のテーブル prime_ministers があり、 id 1, name 伊藤博文, origin 長州 id 2, name 黒田清隆, origin 薩摩 上記の2データはすでに保存されているものとします。 そこにデータを追加するのですが、 name 伊藤博文, origin 長州 の場合は、もうすでにテーブル内に伊藤博文のデータがあるので、上書き更新、 name 大隈重信, origin 肥前 の場合は、nameのカラムに大隈重信が無いので、データを追加。 データベースがSQLite3の場合、どのように書けば良いのでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • SQLiteを始めたけどMySQLを勉強したい

    昨日からSQLを勉強しはじめてPHPでSQLiteでテーブルを作ってSelectしてhtml上で表にするところまでできました(なので超初心者です)。 やっとサイトのひな形ができたので、SQLite対応のレンタルサーバーを探してみたのですが、なんと対応しているサーバーがほとんどありません! 個人使用なので高いレンタル料は無理なので、仕方ないと思い、今後の勉強もあってMySQLを勉強しなおそうかと思っています。 しかし、イマイチconnectとか概念がよくわかっていないのですが、MySQLはそれほど難しいものではないのですか? 本来なら単純な表なのでSQLiteで済まそうかと考えていたのですが、あまりよいSQLite対応サーバーが見つかりませんでした(あれば教えていただきたいです)。

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