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

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

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

Q&A

解決済

1回答

590閲覧

PHPを使ってPostgreSQLに接続しSELECTすると中身がすべてNULLになる

tsysrtk

総合スコア15

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

0グッド

0クリップ

投稿2017/07/22 16:05

編集2017/07/22 16:11

HerokuのPostgreSQLを使用しています。

特定の単語を打つとデータベースの接続し、
SELECT結果を整形した後、それを返信するというLINEBOTを作成したいと考えています。

PostgreSQLへの接続は完了しており、
LINEBOTの動き自体も問題はないのですが、
SELECT結果を確認してみたところ、

SELECT name, count FROM public.member

"messages":[{"type":"text","text":"[[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null]]"}]}

となっており、なぜこうなっているのかわからない状況でございます。
ちなみにデータの数はあっています。

コンソールで、同じSQLを投げた場合はきちんと取得できています。

どなたかご教授のほどよろしくお願いいたします。

PHP

1 2class Model_Countman{ 3 // コンストラクタ 4 public function __construct() {} 5 6 public function get_count(){ 7 $url = parse_url(getenv('DATABASE_URL')); 8 try{ 9 $dsn = sprintf('pgsql:host=%s;dbname=%s', $url['host'], substr($url['path'], 1)); 10 $pdo = new PDO($dsn, $url['user'], $url['pass']); 11 12 $stmt = $pdo->query('SELECT name, count FROM public.member'); 13 $result = $stmt->fetchAll(); 14 15 $data = array(); 16 foreach($result as $row){ 17 $data[] = array( 18 'name' -> $row['name'], 19 'count' -> $row['count'] 20 ); 21 } 22 }catch (PDOException $e){ 23 print('connection ERROR!:'.$e->getMessage()); 24 return $e; 25 } 26 return $data; 27 } 28} 29

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

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

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

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

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

guest

回答1

0

ベストアンサー

気になったところを

php

1 2 $data = array(); 3 foreach($result as $row){ 4 $data[] = array( 5 'name' -> $row['name'], 6 'count' -> $row['count'] 7 ); 8 }

この部分はなんの意図があって記述していますか?

データの加工などもしする必要がないのであれば、

php

1$stmt = $pdo->query('SELECT name, count FROM public.member'); 2$result = $stmt->fetchAll(); 3return $result;

で十分であるはず。

投稿2017/07/22 16:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tsysrtk

2017/07/22 16:33

最初に全件取得を行っていたので、 その名残でしたが、修正するのを忘れていました・・・。 そしてそのまま戻り値の設定したところ無事にデータを取得することに成功しました ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問