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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

2回答

8172閲覧

mysqliのSELECT取得結果を自動で連想配列に格納したい

takg

総合スコア125

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2017/04/30 08:46

PHPのmysqliを用いて、SELECT実行結果を下記のような形式の連想配列に格納しようとしています。
(
(TABLEの列名=>カラムの値,TABLEの列名=>カラムの値,TABLEの列名=>カラムの値,....),
(TABLEの列名=>カラムの値,TABLEの列名=>カラムの値,TABLEの列名=>カラムの値,....),
(TABLEの列名=>カラムの値,TABLEの列名=>カラムの値,TABLEの列名=>カラムの値,....),
.............
)

下記のようにKEYとVALUEをいちいち指定しているのですが、
現在、大量の列について同様な連想配列に格納したいと考えています。
自動で列名を指定し、格納していくようなスマートな方法はないでしょうか?

PHP

1 //プリペアドステートメント 2 $sql = "SELECT `temperature`,`environment` FROM `TABLE名` where `id` = ?"; 3 4 if ($stmt = $mysqli->prepare($sql)) { 5 //条件値をバインド 6 $stmt->bind_param("i", $id); 7 8 //実行 9 $stmt->execute(); 10 11 //取得結果を変数にバインド 12 $stmt->bind_result($id); 13 14 //連想配列に格納 15 while($stmt->fetch()){ 16 $data[]=array( 17 'temperature'=>$temperature, 18 'environment'=>$environment 19 ); 20 }

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

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

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

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

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

guest

回答2

0

fetch_array もしくは、fetch_assoc を利用すれば良さそうな気はがします。

http://php.net/manual/ja/mysqli-result.fetch-array.php
http://php.net/manual/ja/mysqli-result.fetch-assoc.php

投稿2017/04/30 09:15

編集2017/04/30 09:49
tell_k

総合スコア2120

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

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

takg

2017/05/04 06:54

ありがとうございます。 ご紹介いただいたリンク、参考にさせていただきました。
guest

0

ベストアンサー

executeしたmysqli_stmtオブジェクトからget_resultmysqli_resultオブジェクトを取得して、
fetch_allすると、連想配列に入ってますよ。

まあ、数字添え字のも一緒に入っているので、効率悪いですけど。
そうじゃなかったら、fetch_assocで全部取得するのがいいですね。

ここら辺にやり方のサンプルあります。
http://php.net/manual/ja/mysqli-stmt.get-result.php

投稿2017/04/30 09:34

shi_ue

総合スコア4437

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

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

takg

2017/05/04 06:54

ありがとうございます。 いちいち自分で配列に入れていかなくても大丈夫なんですね。 ご紹介いただいたリンクを参考に、無事できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問