- ベストアンサー
ファイル入出力について
postgresqlとphpを使っての課題がでているのですが途中でわからないことがあるので質問します。 ファイルの入出力の方法が分かりません。 sqlでは\copy into,\copy fromでできるのですがphpではどうすればよいか検討がつきません。インターネットでも調べたのですが少し難しく理解ができません。 あまり期限をとられていない課題ですのでしっかり理解する事ができない状態で質問するのは好ましくないと思いますが宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ファイルが「w(書き込み用)」でOpenできない件ですが、パーミッションはどうなっていますか?phpの実行ユーザはApacheなので、606や666でないとダメです。ファイルが存在しない場合にはディレクトリにも707などが必要になります。
その他の回答 (4)
- shimix
- ベストアンサー率54% (865/1590)
ANo.1(&3)です。 マニュアルのサンプルを元にタブ区切りで書き出すようにしてみました。未検証ですのであしからず(汗 $pgcon = pg_connect("host=localhost dbname=publishing user=www password=foo") or die('Could not connect: ' . pg_last_error()); $query = 'SELECT * FROM authors'; $res = pg_query($query) or die('Query failed: ' . pg_last_error()); $fp = fopen('出力するファイル名', 'w') or die('File cannot open'); while ($line = pg_fetch_array($res, null, PGSQL_ASSOC)) { $str = ''; foreach ($line as $item) { $str .= $item . "\t"; } fwrite($fp, $str . PHP_EOL); } fclose($fp); pg_free_result($res); pg_close($pgcon); #typoがあったらごめんなさい&整形に日本語の空白を使っているのでコピペ注意
お礼
わざわざありがとうございます。 Warning: fopen(test_info.txt) [function.fopen]: failed to open stream: Permission denied in ファイル名 on line 28 File cannot open 上記のようなエラーが出ます。自分でも一度ファイルオープンだけ試したのですがファイルが書き込みできない、開けないと出てしまいます。アクセス権は読み込み、書き込みはできるようになっているのですが…
補足
<?php $fp = @fopen("ファイル名", "r"); while( ! feof( $fp ) ){ echo fgets( $fp, 9182 ) . "<br>"; } fclose($fp); ?> このプログラムですと読み込み自体はできたのでファイルはオープンできたようです。
- shimix
- ベストアンサー率54% (865/1590)
>phpを使ってデータベースの値を入出力するにはどうしたらよいかといえばよいのでしょうか… DBからの読み込みも・・ですか?マニュアルはご覧になっていますよね? http://www.php.net/manual/ja/ref.pgsql.php サンプルソースでPostgreSQLに繋いで、データを取得している部分があると思います。サンプルはHTMLに出力していますが、代わりにファイルに書き出せばいいでしょう。方法はANo.2の例でよろしいかと。fwrite()をDBからのデータ取得のLoopに入れればいいです(前処理・後処理は当然必要です)。
- teala
- ベストアンサー率42% (6/14)
こういうことでしょうか? ●ファイルの出力 <?php $filename = "読み込むファイルの名前" print(file_get_contents($filename)); ?> ●ファイルの入力 <?php $filename = "書き込むファイルの名前"; $str = "書き込む情報"; $fp = fopen($filename, "w"); fwrite($fp, $str); fclose($fp); ?> 関係ない答えになっていたらすいません><
お礼
ありがとうございます。試してみます。一番の回答して頂いた方のお礼に詳しく?捕捉しましたので見て頂けると幸いです。
- shimix
- ベストアンサー率54% (865/1590)
ファイル入出力というのは、DBじゃなくて「ファイル」の話ですよね。 #PostgreSQLなどは無関係ですね? >sqlでは\copy into,\copy fromでできるのですが 「SQLでは」ってSQLでファイルを扱うのですか?ちょっと意味がわかりません。普通のファイル入出力はこちら↓の関数を使うのですけど。 http://www.php.net/manual/ja/ref.filesystem.php
お礼
早速の回答ありがとうございます。すこし慌てていたので説明が足りなかったです。 課題の内容はweb上から入力されたデータを作成したデータベースに入力し、そのあとそれらのデータをファイルにして出力する。というものなのです。 phpを使ってデータベースの値を入出力するにはどうしたらよいかといえばよいのでしょうか… 自分でも混乱しており説明がうまくいかなくてすみません。
お礼
なんとかできました。本当にありがとうございます。やはり今の知識だとなかなか難しいですね。でも興味がますます湧きました。