• ベストアンサー

フィールドから値を読み出す

凄い初歩的な質問だと思いますが、 テーブルから値を出力する時に 「100」などといった数値なら読み込み可能なんですが、 「aaa100」といった文字列の場合ですと、 Warning: pg_query() query failed: ERROR: column "aaa100" does not exist のようなエラーが出てしまいます。 何か特別な出力方法が必要なのでしょうか?

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

  • ベストアンサー
noname#223623
noname#223623
回答No.2

フィールドが文字列型の場合は検索する値を「'」で囲みます。「kk = '170cm'」となるように書いてください。本来なら「100」でも「kk = '100'」とするはずですが。本当にそのフィールドは文字列型ですか? 「170」と入っているレコードと、「170cm」のレコードを両方抽出したいなら「=」ではなく「like」を使います。 参考URLにwhere句の使い方がいろいろ書いてあります。確認してください。select文の例ですがupdate文でも同じですから。 それから、これってPHPの話ですか?エラーを見るとpg_queryの使い方が違うのかもね。

参考URL:
http://cyberam.dip.jp/database/postgres/sql/select/select_main.html
gantz77
質問者

お礼

なんか物凄い初歩的なミスだったようです。 $hoge = 'aa11'; $query .= " WHERE hoge = ".$hoge; を $hoge = "'aa11'"; $query .= " WHERE hoge = ".$hoge; にする事によって値が文字列でも抽出できました。 変数指定の時に、てっきりシングルクォーテーションで 囲んでいるものとばかり勘違いしていたようです。 ご助言有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

こんにちは。 まだよくわかってないのですが、 エラーの内容から考えると、「aaa100」というカラムが存在しない・・・。 ちゃんと値の方を訊いてますか? SELECTの項目でのエラーのような・・・。 (^^ゞ

gantz77
質問者

お礼

自分も「この文字列は存在しません」ってエラーが返されて 命令の方を疑いましたが、特に悪いところはありませんでした。 とりあえず解決しましたので、 お騒がせして申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

こんにちは。 私の理解力不足で申し訳ないんですが・・・、 >>テーブルから値を出力する時に 具体的にお願いします。 >>「100」などといった数値なら読み込み可能なんですが ???です・・・。 (^^ゞ

gantz77
質問者

補足

すいません。 文章が分かり辛いですよね… 例えて言うならば「プロフィール」というテーブルの中に 「身長」とか「体重」などのフィールドがあって、 その中の1つ、「身長」というフィールド内に格納されている値が 「170」とか「180」といった数値だったらPHPのSQL文で抽出可能なんですが、 「170cm」という文字列だったら、前述のようなエラーが出てしまうという事です。 UPDATE tablename SET aa = bb WHERE kk = $value; という命令があって、 「$value」の値が「170」だったら正常ですが 「170cm」だったらエラーが出てしまうのです。 (「170」も「170cm」も両方格納されていると仮定してください) どうでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • aptがどうしてもインストールできないです

    皆さんこんにちわ。 本日は、「apt-get」に関して分からない事がありまして、 アドバイスをいただきたく 質問させていただきました。 とあるインストール作業の途中でエラーがでて、 エラー文に表示されていた不足分のツールを、 「apt-get」でダウンロードしようとしました。 すると、 「-bash: apt-get: command not found」と表示されました。 「apt」が入っていないのだと判断し、 googleなどで調べ、 次のようにaptのインストールを試みました。 # yum install apt Loading "fastestmirror" plugin Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * updates: www.ftp.ne.jp * addons: www.ftp.ne.jp * extras: www.ftp.ne.jp Setting up Install Process Parsing package install arguments No package apt available. Nothing to do しかし、うまく行かないようです。 次にaptの配布サイト(http://ayo.freshrpms.net/)から、 rpmを拾ってきてインストールしようとしたら、 次のように警告は出つつもインストールに成功しますが、 「apt-get」を使おうとするとえらーになってしまいます。 どうしていいかわからないでいます。 「yum install apt」でうまくいかない理由も、 rpmのインストール後に成功しない理由も実は分からないでいます。 周囲にLinuxできる人がいなく、 質問できる人もいなく、 どんな小さなものでも アドバイスなどいただけるようでしたら、とてもありがたいです。 どうぞ宜しくお願い致します。 # rpm -ivh apt-0.5.5cnc6-fr1.src.rpm 1:apt warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root97%) warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root ########################################### [100%] warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root warning: user dude does not exist - using root warning: group dude does not exist - using root # apt-get update -bash: apt-get: command not found

  • データベース(PostgreSQL)のフィールドとpg_field_num()について

    現在私は、あるシステムを構築しています。 開発言語にPHP、データベースにPostgreSQLを使用しています。 そのシステムの中で、データベース(テーブル)にアクセスし、指定したカラムの保持しているデータを更新する処理をしているところがあります。 各カラム名は、システム使用者のIDとなっています。 実際のスクリプトとしては、 ************************************************ $id = (使用ユーザのID); $rs = (テーブルをセレクトした際のリソース); $row = pg_fetch_row($rs); $new_data = $row[pg_field_num($rs, $id)] + 1; // 該当する値をインクリメント ************************************************ という感じになります(問題箇所のみ)。 IDには大きく分けて二種類あり、  ・数字だけのもの  ・数字が英字混ざったもの があります。 上記のスクリプトで、数字だけのIDでは正常に動作するのですが、数字と英字が混ざったものは正常に動作しません。 pg_field_num($rs, $id)の値を出力してみると、-1 が出ます。 しかし、指定しているカラムはしっかり存在しています。 念のため、pg_field_name($rs, (該当するカラム番号))を出力してみても、出力されたカラム名は正しいです。 即ち、 ************************************************ $new_id = pg_field_name($rs, (該当するカラム番号)); $test = pg_field_num($rs, $new_id); ************************************************ としても、$testの値は -1 となります。 -1 が出力されると言う事はエラーが出力されているという事なので、pg_result_error等でエラーを出力してみても、エラーはありません。。。(もしかしたら、正しくないやり方をしてるのかもしれませんが) 現状では手の施しようがありません。 どなたか、ご教授お願いします。

    • 締切済み
    • PHP
  • 「column "A" does not exist」というエラーが出て、ビューを作成することができません。

    「column "A" does not exist」というエラーが出て、ビューを作成することができません。 postgreSQL(8.2)&pgAdmin(1.6.3)で以下のようなビューを作成しようとしたところ、「column "A" does not exist」というエラーが出てしまい、作成することができません。 試しにMS ACCESSで全く同じSQL文を発行してみたのですが、ちゃんとクエリが作成でき、以下の図のように問い合わせ結果を閲覧することもできました。PostgreSQLでも作成できる方法があればご教示いただけないでしょうか。 CREATE VIEW v_test AS SELECT 1 AS A, A + 3 AS B; +----+ | A | B | +----+ | 1 | 4 | +----+ 上図のように1という数値を格納する列「A」と、その列の値に3を足した数値を格納する列「B」で構成されるビューを作成できればいいのですが、どうしてもできません(実際はもっと複雑な内容なのですが、要は、直前に定義した列(A)の値を参照する列(B)を作成することができないのです)。 そもそもPostgreSQLではできないものなのでしょうか。それとも初歩的な何かが抜けているのでしょうか。 該当するような参考文献が見つからないため質問させていただきました。 どうかご教示いただけないでしょうか。

  • phpPgAdminでテーブルが作成できない

    PHPからPostgresSQLのDBのテーブルへの読み込みができません。 前任者が作成したtestテーブルでPHPを作成すると問題ないが、 私が作成したtest2テーブルに変更すると、以下のメッセージが出ます。 ******エラーメッセージ********************* Warning: pg_query(): Query failed: ERROR: permission denied for relation test2 ******************************************* phpPgAdminでtest2テーブルを作成しましたが、作成の仕方が問題なのでしょうか。 test2テーブルはtestテーブルとわかる範囲で同じ設定にしてあります。 ぼんやりとした質問になってしまって恐縮ですが、 ご教授ください。宜しくお願い致します。 ****************************************** 作成したPHPの一部 ******************************************* $sql = "SELECT * FROM test;"; ↑これだと問題なく表示される $sql = "SELECT * FROM test2;"; ↑こちらだとエラーになる *******************************************

    • ベストアンサー
    • PHP
  • phpとpostgreの接続にエラー解決方法について

    始めまして、PHPの勉強始まったばかりのものです。以下のエラーを解決するにはどうすればよいでしょうか? Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: database "touroku" does not exist in /home/k0410user/public_html/111/inc/include/init.inc on line 2 Warning: pg_query(): supplied argument is not a valid PostgreSQL link resource in /home/k0410user/public_html/111/inc/include/init.inc on line 6 Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /home/k0410user/public_html/111/inc/include/init.inc on line 8 Warning: pg_close(): supplied argument is not a valid PostgreSQL link resource in /home/k0410user/public_html/111/inc/include/init.inc on line 13

    • 締切済み
    • PHP
  • アクセス 同じフィールド(テキスト型)のレコードを連結させたい

    お世話になります。アクセスの超初心者です。 数値型であれば同じ列の合計できますが、テキスト型で以下のように 連結できる方法がございませんでしょうか? <元テーブル> レコード番号  列:キーワード(テキスト型)  列:抽出条件   1      "山,川"                AAA   2      "海外,国内"             AAA   3      "熊,馬"                BBB   ↓このテーブルを元にクエリをかける <クエリ出力結果> 列:抽出条件にAAAを指定   列:キーワードの合計(連結)   "山,川、海外,国内"       ^^      ↑連結の境目には"、"などの区切りを入れたい。 宜しくお願い致します。

  • テキスト型に入れた値を数値に変換し、「#エラー」を

    テキスト型に入れた値を数値に変換し、「#エラー」を0にしたいです。 access2003です。 テーブル1を ・テキスト型 ・主キーなし として データを 1 2 あ を投入します。 そして SELECT CLng(テーブル1!フィールド1) AS 数値型に変換 FROM テーブル1; クエリを作りました。 このクエリを開くと 1と2は数値に変換されますが、文字列を入れた「あ」は 「#エラー」になります。 「#エラー」を0にしたいのですが どうすえばいいのでしょうか?

  • pg_queryでinsert処理が出来ない

    環境はxp、apache2、php5、Postgresql8.2です。 1台のPCをサーバ&クライアントにしています。 ただ今PHPとPostgresqlの勉強をしています。 phpiniの文字コードの設定 PHPプログラムをShift_JISで保存し、ブラウザへEUC-JPで出力する csvデータを「Book1」読み込んで、 bbというテーブルに格納するために 以下のようにしましたが エラーになってしまいます。 ご教示して頂けたら幸いです。 --------------------------- if($_POST['action'] && $_POST['sign'] == 'up') { //ファイルを開く $fd = fopen ("c:\Book1.csv", "r"); //データを読み込む while (!feof ($fd)) { //「,」区切りでデータを分割 $line = split(",",fgets($fd, 50)); //クエリの実行 $sql = "insert into bb (syain,name,buka) values ('\{$line[0]}\','\{$line[1]}\',{$line[2]})"; pg_query($d_base,$sql); } } --------------------------- 「Book1」の内容 001,山田,100 002,佐藤,200 003,斉藤,300 ・ ・ ・ --------------------------- エラー内容 Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "EUC_JP": 000002 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". in C:\aa.php on line 48 山田

    • ベストアンサー
    • PHP
  • SRPMのrebuildについて

    私はFedora Core 4を使用しています。 rpmbuild --rebuild ~ をすると 警告: user walluck does not exist - using root 警告: group walluck does not exist - using root 警告: user walluck does not exist - using root 警告: group walluck does not exist - using root エラー line 14: Tag takes single token only: Release: %mkrel 2 とでてしまい。リビルドできません。もしかして、一旦SPECファイルにしてそれを直に書き換える必要があるのでしょうか? FC4用のrpm(ACE5.4,onmiORBpy2.3など)が無かったため他のディストリビューションのSRPMをFC4用にビルドして使おうと思ったのですがどれも上記のようなエラーがでてしまいます・・・。 どうかよろしくお願いします。

  • PostgreSQL 8.0.2 の ERROR: relation does not exist.

    エラーの詳細は以下のとおりです。 まず、ダウンロード後解凍したpostgresql-8.0-ja.msiを ダブルクリックして、Windows2000serverSP4 に postgreSQL8.02 をインストールしました。 このときユーザpostgreも新規作成しました。 つぎに、ツールpgAdmin3を使用して上記postgreユーザで データベースtemplate1のpublicスキームの中に、 ID(int4), Book(text)の2フィールド、IDフィールドをキーとして、 tblBooksという名称の練習用の簡単なテーブルを作成しました。 さらに、pgAdmin3を使用して、このtblBooksテーブルに適当なレコードも4件追加でき、 pgAdmin3のテーブルビューで追加したこのレコード4件を確認できました。 また、pgAdmin3のクエリツールを用いて、クエリの下記を実行すると 正常に実行してくれます。 select version(); "PostgreSQL 8.0.2 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)" ところが、上で作成したtblBooksテーブルを含めたクエリを実行させると、 何回やっても次のようなエラーとなります。 select * from tblBooks; ERROR: relation "tblbooks" does not exist.------(1) pgAdmin3でなく、ツールpgSQLを使っても同じエラー(1)がでます。 この"relation does not exist"とは一体どんなエラーなんでしょうか? 環境は, Windows 2000 Server SP4 で、 template1,tblBooksは次のようになっています。 CREATE DATABASE template1 WITH OWNER = postgres ENCODING = 'EUC_JP' TABLESPACE = pg_default; GRANT ALL ON DATABASE template1 TO postgres; CREATE TABLE "tblBooks" ( "ID" int4 NOT NULL, "Book" text, CONSTRAINT "key" PRIMARY KEY ("ID") ) WITHOUT OIDS;