PHP,MySQLともに初心者です
いろんなサンプルプログラムを見て少しずつ進めているのですが、本3冊にネットで検索しても解決できないので・・・
function getSelect($field,$table,$where){
$query="select $field from $table $where;";
$result=$this->getResult($query);
return $result;
}
$result=$db->getSelect("*","main","where myouji=$_POST[myouji]");
while($row = mysql_fetch_array($result[result])){
echo "$row[id]";
}
こんな感じでmainテーブルからmyoujiに該当するrowを取得したのですが、
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
とエラーが出てしまいます。
他のところで、
$result=$db->getSelect("*","main","where id=$_POST[id]");
$rows=mysql_fetch_array($result[result]);
としたときはエラーなく行くのですが、上のような多次元連想配列(下の方はidを重複させてないので必ずrowが1つ・・・1次元連想配列?)になるとエラーになってしまいます。
これはどう修正すればいいのでしょうか。
たったこれ1行のつまづきで4時間くらいかかってます。
誰か助けてください
No.1
- 回答日時:
まず$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が一致する複数のレコードを取得し、その中をばらして表示したいだけなのですが・・・
やりたいことは初歩中の初歩なのですが、こんなところでつまずいてしまってます。
No.2ベストアンサー
- 回答日時:
getResultの内容を拝見しました。
$resultはmysqlの結果リソースと結果の行数を持つ1次元の連想配列ということですね。
でしたら、ロジック的には問題なさそうです。
そうするとやはり$result[result]の解釈があやしい気がします。
とりあえず全ての$result[result]を$result['result']という風に
連想配列の添え字を引用符で囲ってみて下さい。
$result[count]も同様に。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP php エラー 2 2022/10/23 16:43
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Resource id #3 をフィールドの...
-
phpのエラーについてです
-
SQL文2つ実行
-
ボタンのonclick時における関数...
-
飲食店のメニュー表を作成中。M...
-
テーブルに入っているデータと...
-
住所録を作りたい
-
sqlから多次元配列に要素を格納...
-
MySQLのUPDATE実行結果を受け取...
-
実行時エラー3131 FROM 句の構...
-
エクセルVBAについて
-
SQL文が実行できません
-
VBAをつかってクエリの情報を抽...
-
PHP&MySQLでの文字列+数列の一...
-
Q&Aサイトを作成していてURLの...
-
VB.NET エラーになる箇...
-
SQL文の実行に失敗しました???
-
php データ削除
-
MySQLでデータベースにデータin...
-
PHPで[]の使い方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql_fetch_objectのエラー
-
XAMPPで画面が真っ白になります。
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHP+mysqlでSQL文に文字数制限...
-
stringaddslashes 半角¥が消える
-
phpのエラーについてです
-
PHPで絞り込み検索結果の件数を...
-
PHPエラーが出て困ってます
-
PDOを使いたい
-
CSVをダウンロードさせた際、CS...
-
ボタンのonclick時における関数...
-
mysql_query等でレコード数を変...
-
Resource id #3 をフィールドの...
-
SQL文2つ実行
-
XAMMPが起動しません。
-
SQLの結果が返ってこない
-
PHPのSQLインジェクションはspr...
-
MySQLのデータを使ってプルダウ...
-
会員登録したらメールが送られ...
おすすめ情報