PHP,SQLについて質問です。


データベースへ登録されている数字をPHP上でSELECT文で抽出して

それを変数に以下の様に格納しようとしました。

$abc=mysql_query("SELECT KOUNYUU_KINGAKU FROM YAHUOKU_KANRI WHERE KANRI_NO='".$_POST["kanri_no"]."'")

しかし、その値をechoで出力すると、返される値は Resource id #2 

SQLの管理画面上でSELECT命令をするときちんとした値を返してくれるのですが、

PHP上で処理できません。

取り出した値を掛け算して処理をしようとしているのですが、

 片方の値が100だったら

Resource id #2 を数字の2と処理し

100*2(Resource id #2)=200 となってしまい大変困っています。

これを解決するにはどうすればいいでしょうか?

どうしても自分が指定した値で処理したいのですが。。。

お手数をおかけしますが時間がある方おりましたらご回答よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/07/31 22:02:38
  • 終了:2009/08/01 11:33:46

ベストアンサー

id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/08/01 02:40:59

ポイント100pt

Resource id #番号 については以前から何度か躓いておられますが、

プログラミング作業を1週間ほど中断してでも入門系の本を、

最低1冊、出来れば2、3冊読破してください。急がば回れです。


プログラムの中でも、一度にやろうとすれば誰でも混乱します。

面倒ではありますが、ひとつひとつの作業をしっかりと行うように、

心がけましょう。こちらも、急がば回れです。


回れと言っても、それほど難しいことでは無く、echoやprint_rなど、

を使って、途中の値がどう変化していくのかを追っていくだけです。

アマから開発を生業にしている人までが使う基本中の基本テクニックです。

これからも自力での作成を目指すのであれば、絶対に忘れないでください。

$sql = "SELECT KOUNYUU_KINGAKU FROM YAHUOKU_KANRI WHERE KANRI_NO='" . $_POST["kanri_no"] . "'";
echo $sql . "<br />\n"; # SQL文が正しいかどうかをチェックするために表示させます。

$abc = mysql_query($sql);
echo mssql_num_rows($abc) . "<br />\n"; # 何レコード存在するのかを表示させます。

while ($row = mssql_fetch_assoc($abc)) {
    $kounyuu_kingaku=$row["KOUNYUU_KINGAKU"];
    echo $kounyuu_kingaku . "<br />\n"; # 金額を出力します。
}

動作確認のポイントは

・SQL文に kanri_no が正しく書き込まれているかをチェック。

・レコードがゼロだとすればデータが無いという事になるのでSQL文の見直しと

 書き込むプログラムのほうを確認する必要が出てくる。

・レコードが1件以上なのに金額が出力されないとなれば

 $sqlのフィールド名が間違っているなどになるので、

 koujirou6218さんがコメントくださっているように print_r($row); を入れてみる。

一通り動作確認作業が済めばechoはコメントアウト(当面はコメントとして残す事!)

id:aiomock

ご回答ありがとうございます。

動作確認のポイントまで詳しく書いて頂きとても参考・勉強になります。

本日順を追って行ってみたのですが

echo mssql_num_rows($abc) . "
\n";

を出力してみるとページが空白になってしまいます。

ちゃんと稼動するとheaderがきちんと起動してページ移動をするようになっているのですがこれは何か問題があるということでしょうか?

2009/08/01 11:06:06

その他の回答(1件)

id:koujirou6218 No.1

koujirou回答回数597ベストアンサー獲得回数472009/07/31 22:21:13

ポイント100pt

$abcをmysql_fetch_arrayで展開する必要があります。

http://au2.php.net/manual/ja/function.mysql-fetch-array.php

mysql_fetch_arrayによって展開される配列に対して処理を施してください。

デバッグするとわかりやすいと思います。

print_r(mysql_fetch_array($abc));

id:aiomock

ご回答ありがとうございます。

自分で作成してみました。

$abc=mysql_query("SELECT KOUNYUU_KINGAKU FROM YAHUOKU_KANRI WHERE KANRI_NO='".$_POST["kanri_no"]."'")

while ($row = mysql_fetch_array($abc, MYSQL_ASSOC)) {

$kounyuu_kingaku=$row["KOUNYUU_KINGAKU"];

}

と記入して

echo $kounyuu_kingaku ;

としたのですが、

データが出力されず、$kounyuu_kingakuは空白になっていました。

この場合どのような原因が考えられるのでしょうか?

自分では何が原因かわかりませんでした。。。

2009/07/31 23:37:11
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/08/01 02:40:59ここでベストアンサー

ポイント100pt

Resource id #番号 については以前から何度か躓いておられますが、

プログラミング作業を1週間ほど中断してでも入門系の本を、

最低1冊、出来れば2、3冊読破してください。急がば回れです。


プログラムの中でも、一度にやろうとすれば誰でも混乱します。

面倒ではありますが、ひとつひとつの作業をしっかりと行うように、

心がけましょう。こちらも、急がば回れです。


回れと言っても、それほど難しいことでは無く、echoやprint_rなど、

を使って、途中の値がどう変化していくのかを追っていくだけです。

アマから開発を生業にしている人までが使う基本中の基本テクニックです。

これからも自力での作成を目指すのであれば、絶対に忘れないでください。

$sql = "SELECT KOUNYUU_KINGAKU FROM YAHUOKU_KANRI WHERE KANRI_NO='" . $_POST["kanri_no"] . "'";
echo $sql . "<br />\n"; # SQL文が正しいかどうかをチェックするために表示させます。

$abc = mysql_query($sql);
echo mssql_num_rows($abc) . "<br />\n"; # 何レコード存在するのかを表示させます。

while ($row = mssql_fetch_assoc($abc)) {
    $kounyuu_kingaku=$row["KOUNYUU_KINGAKU"];
    echo $kounyuu_kingaku . "<br />\n"; # 金額を出力します。
}

動作確認のポイントは

・SQL文に kanri_no が正しく書き込まれているかをチェック。

・レコードがゼロだとすればデータが無いという事になるのでSQL文の見直しと

 書き込むプログラムのほうを確認する必要が出てくる。

・レコードが1件以上なのに金額が出力されないとなれば

 $sqlのフィールド名が間違っているなどになるので、

 koujirou6218さんがコメントくださっているように print_r($row); を入れてみる。

一通り動作確認作業が済めばechoはコメントアウト(当面はコメントとして残す事!)

id:aiomock

ご回答ありがとうございます。

動作確認のポイントまで詳しく書いて頂きとても参考・勉強になります。

本日順を追って行ってみたのですが

echo mssql_num_rows($abc) . "
\n";

を出力してみるとページが空白になってしまいます。

ちゃんと稼動するとheaderがきちんと起動してページ移動をするようになっているのですがこれは何か問題があるということでしょうか?

2009/08/01 11:06:06
  • id:b-wind
    > WHERE KANRI_NO='".$_POST["kanri_no"]."'"
    説明の簡略化のためならいいんだが、実際にこんなコード書いたら思いっきりセキュリティーホールになるが。
    大丈夫なのか?
  • id:aiomock
    b-wind さん

    セキュリティホールのご指摘ありがとうございます。

    次からなるべく注意して変更後に質問するようにします。
  • id:koujirou6218
    while ($row = mysql_fetch_array($abc, MYSQL_ASSOC)) {
    print_r($row);
    //$kounyuu_kingaku=$row[KOUNYUU_KINGAKU];


    }

    での、出力はどうなりますか?
  • id:aiomock
    koujirou6218 さん

    ご回答ありがとうございます。

    Array ( [KOUNYUU_KINGAKU] => )

    の様に出力されます。

    これはデータが入っていないということでしょうか?
  • id:aiomock
    koujirou6218 さん

    本日 kn1967 さん の回答の後 echo print_r を使用して変化を追っていったところ

    自分のプログラムの組み方の構成がおかしいために出力エラーが出ていることが発覚しました。

    その後

    koujirou6218 さん に指摘いただいたとおりに出力したらきちんと表示されました。

    とても丁寧にご回答いただいたので大変申し訳ないです。。。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません