• 締切済み

PHPの配列をDBのテーブルに入れたいのですが

完全に行き詰まりそうなので助けていただきたく投稿(投降)します。 PHP内でSQLを走らせた結果を、 $result に入れています。 $rows = pg_num_rows($result); print('レコード数は、'.$rows.'です<br><br>'); // 上記、2行のコードで件数が正しいことは確認しました。 $sabun = array(); $sabun = pg_fetch_all($result); $cnt1 = count($sabun); print('配列sabunのレコード数は'.$cnt1.'です<br><br>'); // 上記、4行のコードで配列に格納された件数が正しいことは確認しました。 // 最初の2行の件数とこの4行の件数は同じ件数です。 // ここで配列sabunのデータをテーブルに入れる /* エラーが出た */ $result = pg_insert( $link,テーブル,$sabun ); /* エラーが出た */ $result = pg_insert( $link,テーブル,$result ); /* エラーが出た */ $result = pg_copy_from( $link,テーブル, $sabun ); /* エラーが出た */ $result = pg_copy_from( $link,テーブル, $result ); // 上記、4種類のコードを試したのですが、全てエラーが出ました(泣) if (!$result) { print('テーブルへの登録が失敗!<br><br>'.pg_last_error()); $err_flg = 1; goto ENDCLR; } 「テーブルへの登録が失敗!」以外のエラーメッセージ等は 表示されませんでした。 エラーが出た4種類のいづれかでうまく行くと思ったのですが、 全滅してしまい途方に暮れています。 根本的にPHPへの理解が足りないのかもしれません。 何か解決の糸口などご教授いただけますと助かります。 どうぞよろしくお願いいたします。

みんなの回答

  • webuser
  • ベストアンサー率33% (372/1121)
回答No.1

pg_insert( $link,テーブル,$sabun ); http://php.net/manual/ja/function.pg-insert.php $linkはコネクトの値ですが、正しくコネクトされていますか? $sabunはテーブル のフィールド名をキーに、 挿入する内容を値にもつ配列ですが満たしていますか? ちゃんと1行づつやってますか?

masa_biz
質問者

お礼

コメントありがとうございます。 > $linkはコネクトの値ですが、正しくコネクトされていますか? 上記、テーブルをちゃんと見に行っているかを確認するために、 以下のコードを追加して、正しいレコード数が表示されました。 $result = pg_query($link, "select * from テーブル"); $rows = pg_num_rows($result); print('テーブルのレコード数は、'.$rows.'です<br><br>'); なので、コネクトは問題ないと思いますが、いかがでしょうか。 > $sabunはテーブル のフィールド名をキーに、 挿入する内容を値にもつ配列ですが満たしていますか? > ちゃんと1行づつやってますか? 勉強中のため、コメントの意味を取り違えていたら申し訳ありません。 どこかのサイトで見かけたのですが、構文として、フィールド名をすべて記載し、配列[0],配列[1]、・・・ のように書く必要がある、ということでよかったでしょうか? また、whileなどで$sabunのレコード数分、回す必要がある、ということでよかったでしょか?

masa_biz
質問者

補足

最後に、サーバーのログにあったエラーメッセージも記載します。(一部伏字とさせていただいております。) PHP Warning: pg_insert(): Accepts only string key for values in /home/・・・/UpdateDB.php on line 151, referer: http://・・・/FileUpload2.php

関連するQ&A