• 締切済み

phpとmysql 検索とデータの受け渡しについて

初心者の質問ですみません。 本当に最近勉強をはじめたばかりなのですが以下2点が分からなくて困っております。 (1)データの受け渡しについて 例えばpage1.phpというページで $i=rand(0, 10); で$iという変数をランダムに生成します。 その数値をpage2.phpという次に進んだページで利用するにはどうしたらいいでしょうか? 一旦DBに保存して、移動先のページで取得しないとできないでしょうか? それともPOSTなどで送信する事ができますか? POSTなどはインプットした値を送るもののようなので、今回のようなケースでは使えませんか? (2)レコードを検索して表示させたいのですが、何も表示されなくて困っています。 食品のテーブルsyokuhinがあって、その中に syoku_id syoku_name syoku_price などのフィールドがあります。 idを選択して$numに入れて次のような検索をしてみて何も表示されません… $recordSet = "SELECT * FROM syokuhin WHERE syoku_id = ". '$num' ; $table = mysql_fetch_assoc($recordSet); print(htmlspecialchars($table['syoku_name'])); print(htmlspecialchars($table['syoku_price'])); どのように訂正すれば良いでしょうか? 色々試し過ぎて混乱していますので、もしかしたらイージーミスなのかもしれないですし、 根本的に何か違うのか良くわからなくなりました… ド素人な質問ですみません… おわかりになる方がいらっしゃったら是非よろしくお願い致します。

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

(1) page2.phpにどうやって遷移するのか次第ですが、QueryStringで渡して(anchor要素のhref属性で、page2.php?i=<?= $i; ?>)受け取り側で$_GET['i']で取り出してもいいですし、セッション変数に格納することもあります。 (2) >$recordSet = "SELECT * FROM syokuhin WHERE syoku_id = ". '$num' ; >$table = mysql_fetch_assoc($recordSet); この書き方では$recordSetは単なる「文字列」ですよね。mysql_fetch_assocの引数はmysql_queryを実行した戻り値のリソースです。つまり $recordSet = mysql_query(sprintf("SELECT * FROM syokuhin WHERE syoku_id = '%s'", mysql_real_escape_string($num)); $table = mysql_fetch_assoc($recordSet); としなければいけません。本来であればエラーメッセージが出ないといけませんが >何も表示されません… ということでしたら(少なくともデバッグ時には)エラーメッセージが表示されるように設定を変更してください。 なお、MySQL関数はもうすぐオワコンです。MySQLiもしくはPDOで書き直してください。

関連するQ&A

専門家に質問してみよう