質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1203閲覧

phpでDBのデータを複数件テーブル表示させたい。

Gnr4A

総合スコア30

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/05/25 04:08

編集2021/05/25 04:50

php&DBについて質問します。
phpのmysqli_fetch_assoc関数を使い、DBの一致する件数を取ってきて表示部分に表示させたいです、ですが一行しかとって来ておらず、同じ行をループしているだけです。どうしたら2次元配列でデータを取ってくることができるのでしょうか。
本当はforeachを書いて2次元配列で表示させたいです。

php

1<?php 2$local='localhost'; 3$user_name='root'; 4$pass=''; 5$db_name='sample'; 6$row=''; 7$result=''; 8 9$link=mysqli_connect($local,$user_name,$pass,$db_name); 10mysqli_set_charset($link,'utf8'); 11$result=mysqli_query($link,"SELECT id,name,address FROM sample1 WHERE name='あいうえお'"); 12while($row=mysqli_fetch_assoc($result)){ 13 $count++; 14} 15 16mysqli_close($link); 17 18foreach($row as $value){ 19//同じ階層のidが複数件取り出されていました。 20 print $row['id']; 21//idの部分を数字に変えたい!!!! 22} 23?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PHP: mysqli_result::fetch_assoc - Manual

サンプルコードを見たほうが理解できるかも。
1行分ずつ取得して処理するスタイル。

php

1while($row=mysqli_fetch_assoc($result)){ 2 // echo $row['id']; などとして結果にアクセス可能 3 $count++; 4}

このブロックが終わったときにはすでにクエリー結果の読み出しが終わっちゃっている。

2次元的にまるっと取得したければ、むしろこちら:
mysqli_fetch_all
数行~数十行程度のオーダーならいいけど、
膨大になるようならやはり1行ずつ取得するスタイルがいいよ。
サンプルコードをじっくり読んでね。

それと、配列に何千件、何万件も溜め込んでから配列の中で処理を回すのって、
そんなに速くないから、
クエリーの工夫でたとえば、

  • 全体の件数を取得するクエリー。
  • 必要なオーダーのデータ数に絞り込んで、データを部分的に表示。
  • ページネーションを実施して、小出しに表示。

みたいにしたらいい。
クエリーの工夫の仕方がわからず、仕方なく配列に全部読み込んで、配列で加工するスタイルは初学者にありがち。
配列に全部のデータを格納してから配列の件数をカウントする、のはナンセンス。
まぁ、場合によるけれど。

投稿2021/05/25 04:14

編集2021/05/25 05:03
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gnr4A

2021/05/25 04:46

回答ありがとうございます。 送ってくださったurlは前回も見たのですが、書いてあることはよく分かりませんでした。 while文で$row=mysqli_fetch_assoc($result);を条件式にして、中に$countをプラスしていき行数は取得できるようにしました。ですが$rowが2次元配列ではないせいかうまくいきません。$rowは2次元配列ではないのでしょうか
m.ts10806

2021/05/25 06:09

提示されているURLはPHPマニュアル なので、公式の資料です。 むしろ初心者が最初にやるべきはPHPマニュアルの活用と思います。
guest

0

ソースを活かすなら

PHP

1while($row[]=mysqli_fetch_assoc($result)){

投稿2021/05/25 05:06

yambejp

総合スコア115010

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/05/25 05:07

mysqliよりはPDOのほうが参考サイトも多く、汎用性も高いのでおすすめです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問