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

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

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

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

Q&A

解決済

3回答

1166閲覧

phpで配列を返したいのですが良い方法はございませんでしょうか?

moitaro

総合スコア443

PHP

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

0グッド

0クリップ

投稿2017/03/30 06:25

お世話になっております。

グーグルさんで調査しても
https://teratail.com/questions/10692

https://hydrocul.github.io/wiki/programming_languages_diff/tuple/return-tuple.html
などと無理らしいのですが足掻きたいので質問失礼します。

宣言

php

1 function getDB () { 2 $idpw = '../../../../../idpw.php';//この中に$dsnで連想配列で入っている 3 require("$idpw"); 4 $con = mysql_connect($dsn['host'],$dsn['user'],$dsn['pass']); 5 if (!$con) { 6 echo('データベースに接続できませんでした。'); 7 } 8 $db = mysql_select_db($dsn['dbname'], $con); 9 if (!$db) { 10 echo('データベースを選択できませんでした。'); 11 } 12 $db = mysql_query('SET NAMES utf8', $con); 13 if (!$db) { 14 echo('文字コードを指定できませんでした。'); 15 } 16 return $db; 17 }

使用方法

php

1 $list = 'SELECT * FROM HOGETABLE'; 2 $db=getDB(); 3 $list = $db->Execute($list_query); 4

のようにgetDB()関数を宣言したいのですが$dbを渡す良い方法がないようで
困っております。

どのようにコーディングするのが良いか伺ってよろしいでしょうか?

お忙しいところ大変申し訳ないのですが
上記お問い合わせいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

まあmysql_*系の関数を使っている時点で自己責任なので
なんとか自分で解決すべきですが、おかしいとこだけ

getDB()の戻りは$dbをやめて$conにしたほうがよいでしょう。
そのコネクションを利用してデータを抽出します。
あとは以下のような書き方をします。

PHP

1$sql = 'SELECT * FROM HOGETABLE'; 2$con=getDB(); 3$res=mysql_query($sql,$con) 4while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ 5 $rows[]=$row; 6} 7

投稿2017/03/30 06:33

yambejp

総合スコア114747

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

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

moitaro

2017/03/30 09:08

ありがとうございます。 古いソース手直しだったため失礼しました。 mysql_*系を止めて $con = new PDO('mysql:host='.$dsn['host'].';dbname='.$dbname.';charset=utf8', 'username', 'password'); として $con を返し 使用側で $con->query($list_query)と実装してみます。 厳しいお言葉ありがとうございました。
guest

0

なぜExecuteが使えないかというと、getDBで返却しているのが、mysql_queryの戻り値だからです。
mysql_queryの戻り値は、resourceまたはtrue/falseです。
http://php.net/manual/ja/function.mysql-query.php
今回使っているクエリはSETなので、戻り値はtrue/falseでしょうか。
で、あるから当然bool値にExecuteなんてメソッドは持っていません。
なので配列が返せないとかそういう話ではなく、関数の使い方の理解不足です。
で、解決策はというとyambejpさんの方法になるかと思います。

投稿2017/03/30 06:45

ttyp03

総合スコア16998

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

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

0

素直に、MySQLiのオブジェクト指向型を使いましょう。

PHP

1$db = new mysqli('host', 'pass');

投稿2017/03/30 06:28

maisumakun

総合スコア145183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問