- ベストアンサー
データベースから多次元連想配列でデータを取得できない
- PHPとMySQLの初心者がデータベースから多次元連想配列でデータを取得する際にエラーが発生しています。具体的には、mysql_fetch_array()関数を使用してデータを取得しようとすると、"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource"というエラーメッセージが表示されます。一方、1次元連想配列の場合にはエラーが発生しません。修正方法を教えてください。
- データベースからデータを取得する際に、多次元連想配列を使用するとエラーが発生してしまいます。初心者ですので、解決策がわかりません。具体的には、mysql_fetch_array()関数を使用するときにエラーが発生し、「Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource」というメッセージが表示されます。どうすればエラーを解消できるでしょうか。
- PHPとMySQLを使用してデータベースからデータを取得する際に、多次元連想配列を使いたいのですが、エラーが発生してしまいます。具体的には、mysql_fetch_array()関数を使用すると、"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource"というエラーメッセージが表示されます。どのように修正すればエラーが解消されるのでしょうか。助けていただけると嬉しいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
getResultの内容を拝見しました。 $resultはmysqlの結果リソースと結果の行数を持つ1次元の連想配列ということですね。 でしたら、ロジック的には問題なさそうです。 そうするとやはり$result[result]の解釈があやしい気がします。 とりあえず全ての$result[result]を$result['result']という風に 連想配列の添え字を引用符で囲ってみて下さい。 $result[count]も同様に。
その他の回答 (1)
- JV44
- ベストアンサー率50% (24/48)
まず$resultは多次元配列ではなく、1次元の配列です。 多次元配列は$hoge[a][b](この場合は2次元)のようなものを差します。 $resultにmysql result型が配列として設定されていることを前提とします。 mysql_fetch_assoc関数はマニュアルにも書かれているとおり mysql result型の変数しか受け付けませんので、まず配列という時点でアウトです。 foreach(result as $value) { while($row=mysql_fetch_assoc($value) { ... } } のように配列を展開して処理する必要があります。 ところでgetResultの中身が記載されていないのでよく分かりませんが、 複数回mysql_query関数を発行しているのでしょうか? 1回しか発行していないのなら複数行の結果を取得する場合でも配列にする必要は無いんですが。 >while($row=mysql_fetch_assoc(... という処理で、mysql_fetch_assocを呼び出す度に1行ずつqueryの結果を取りだします。 全ての結果が取り出し終わるとmysql_fetch_assocはnullを返してくるので whileのループから抜け、安全に全ての結果を処理できるロジックになっています。 あと$result[result]が何を期待しているのかが分かりません。 「なぜ、$foo[bar] は使用できないのか?」を検索して 記述方法を改めるようにして下さい。
補足
回答ありがとうございます。 なにぶん初心者なもので、お答えを理解するのにも時間がかかっております。 >「なぜ、$foo[bar] は使用できないのか?」を検索して 意味が理解できてないので、もう少し勉強します ちなみにgetResultの中身です。 function getResult($query){ $result[result]=mysql_query($query,$this->connect); $result[count]=@mysql_num_rows($result[result]); return $result; } >あと$result[result]が何を期待しているのか 期待するというより、サンプルコードを参考に見よう見まねってところでまだ何も分からず書き進めています。 要は、mainテーブルのmyoujiが一致する複数のレコードを取得し、その中をばらして表示したいだけなのですが・・・ やりたいことは初歩中の初歩なのですが、こんなところでつまずいてしまってます。
お礼
おつきあい頂き、感謝します。 解決しました。