電子書籍の厳選無料作品が豊富!

postgresqlとphpを使っての課題がでているのですが途中でわからないことがあるので質問します。

ファイルの入出力の方法が分かりません。
sqlでは\copy into,\copy fromでできるのですがphpではどうすればよいか検討がつきません。インターネットでも調べたのですが少し難しく理解ができません。

あまり期限をとられていない課題ですのでしっかり理解する事ができない状態で質問するのは好ましくないと思いますが宜しくお願いします。

A 回答 (5件)

ファイルが「w(書き込み用)」でOpenできない件ですが、パーミッションはどうなっていますか?phpの実行ユーザはApacheなので、606や666でないとダメです。

ファイルが存在しない場合にはディレクトリにも707などが必要になります。
    • good
    • 0
この回答へのお礼

なんとかできました。本当にありがとうございます。やはり今の知識だとなかなか難しいですね。でも興味がますます湧きました。

お礼日時:2008/02/27 20:08

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があったらごめんなさい&整形に日本語の空白を使っているのでコピペ注意

この回答への補足

<?php
$fp = @fopen("ファイル名", "r");
while( ! feof( $fp ) ){
echo fgets( $fp, 9182 ) . "<br>";
}
fclose($fp);
?>

このプログラムですと読み込み自体はできたのでファイルはオープンできたようです。

補足日時:2008/02/27 19:30
    • good
    • 0
この回答へのお礼

わざわざありがとうございます。
Warning: fopen(test_info.txt) [function.fopen]: failed to open stream: Permission denied in ファイル名 on line 28
File cannot open
上記のようなエラーが出ます。自分でも一度ファイルオープンだけ試したのですがファイルが書き込みできない、開けないと出てしまいます。アクセス権は読み込み、書き込みはできるようになっているのですが…

お礼日時:2008/02/27 19:17

>phpを使ってデータベースの値を入出力するにはどうしたらよいかといえばよいのでしょうか…



DBからの読み込みも・・ですか?マニュアルはご覧になっていますよね?

  http://www.php.net/manual/ja/ref.pgsql.php

サンプルソースでPostgreSQLに繋いで、データを取得している部分があると思います。サンプルはHTMLに出力していますが、代わりにファイルに書き出せばいいでしょう。方法はANo.2の例でよろしいかと。fwrite()をDBからのデータ取得のLoopに入れればいいです(前処理・後処理は当然必要です)。
    • good
    • 0

こういうことでしょうか?



●ファイルの出力
<?php
$filename = "読み込むファイルの名前"
print(file_get_contents($filename));
?>

●ファイルの入力
<?php
$filename = "書き込むファイルの名前";
$str = "書き込む情報";
$fp = fopen($filename, "w");
fwrite($fp, $str);
fclose($fp);
?>

関係ない答えになっていたらすいません><
    • good
    • 0
この回答へのお礼

ありがとうございます。試してみます。一番の回答して頂いた方のお礼に詳しく?捕捉しましたので見て頂けると幸いです。

お礼日時:2008/02/27 18:34

ファイル入出力というのは、DBじゃなくて「ファイル」の話ですよね。



#PostgreSQLなどは無関係ですね?

>sqlでは\copy into,\copy fromでできるのですが

「SQLでは」ってSQLでファイルを扱うのですか?ちょっと意味がわかりません。普通のファイル入出力はこちら↓の関数を使うのですけど。

  http://www.php.net/manual/ja/ref.filesystem.php
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。すこし慌てていたので説明が足りなかったです。

課題の内容はweb上から入力されたデータを作成したデータベースに入力し、そのあとそれらのデータをファイルにして出力する。というものなのです。

phpを使ってデータベースの値を入出力するにはどうしたらよいかといえばよいのでしょうか…

自分でも混乱しており説明がうまくいかなくてすみません。

お礼日時:2008/02/27 18:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!