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

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

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

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

2回答

2226閲覧

PHP SQL 結果セットの見えない姿を見たいです

marimokomokmOk

総合スコア52

MySQL

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2017/03/09 01:21

編集2017/03/09 01:40

$stmtは、PDOStatementクラスのインスタンスが代入されています。
PDOStatementクラスは、ステートメント実行ときは、関連する結果セットを表します。
ステートメント実行ときというのは、
$stmt = $pdo->prepare ( 'select * from customer where login=? and password=?' );

select * from customer where login=? and password=?
のことでしょうか。

結果セットというのは、
select * from customer where login=? and password=?
を実行した結果セット
のことでしょうか。
結果セットってみれますか?
どのような姿なのでしょうか。
みたいです。
ご教示ください。

php

1<?php 2session_start (); 3// unset→指定した変数を破棄する 4unset ( $_SESSION ['customer'] ); 5$pdo = new PDO ( 'mysql:host=localhost;dbname=takahashi1;charset=utf8', 'takahashi', 'takahashi' ); 6$stmt = $pdo->prepare ( 'select * from customer where login=? and password=?' ); 7$stmt->execute ( array ( 8 $_POST ['login'], 9 $_POST ['password'] 10) ); 11// foreachは配列とオブジェクトをループして使うための構文 12// 配列ではないが使いやすくするために特別にforeachの反復処理で使えるように作られている 13// $rowという変数に入れる 14foreach ( $stmt->fetchAll () as $row ) { 15// 連想配列$_SESSION['customer']にキーを指定して追加し、値として連想配列を代入 16 $_SESSION ['customer'] = array ( 17//idというキーで$row['id']を入れる 18 'id' => $row ['id'], 19 'name' => $row ['name'], 20 'address' => $row ['address'], 21 'login' => $row ['login'], 22 'password' => $row ['password'] 23 ); 24} 25if (isset ( $_SESSION ['customer'] )) { 26 echo 'いらっしゃいませ、', $_SESSION ['customer'] ['name'], 'さん。'; 27} else { 28 echo 'ログイン名またはパスワードが違います。'; 29} 30?>

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

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

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

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

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

guest

回答2

0

ベストアンサー

php

1foreach ( $sql->fetchAll () as $row ) {

php

1$rows = $sql->fetchAll(); 2var_dump($rows); // ここで確認 3 4foreach ( $rows as $row ) {

投稿2017/03/09 01:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

marimokomokmOk

2017/03/09 02:08

ありがとうございます。 結果は array(0) { } でした。 <?php session_start (); // unset→指定した変数を破棄する unset ( $_SESSION ['customer'] ); $pdo = new PDO ( 'mysql:host=localhost;dbname=takahashi1;charset=utf8', 'takahashi', 'takahashi' ); $stmt = $pdo->prepare ( 'select * from customer where login=? and password=?' ); $stmt->execute ( array ( $_POST ['login'], $_POST ['password'] ) ); // foreachは配列とオブジェクトをループして使うための構文 // 配列ではないが使いやすくするために特別にforeachの反復処理で使えるように作られている // $rowという変数に入れる $rows = $stmt->fetchAll (); var_dump($rows) // foreach ( $stmt->fetchAll () as $row ) { // foreach ( $rows as $row ) { // // 連想配列$_SESSION['customer']にキーを指定して追加し、値として連想配列を代入 // $_SESSION ['customer'] = array ( // // idというキーで$row['id']を入れる // 'id' => $row ['id'], // 'name' => $row ['name'], // 'address' => $row ['address'], // 'login' => $row ['login'], // 'password' => $row ['password'] // ); // } // if (isset ( $_SESSION ['customer'] )) { // echo 'いらっしゃいませ、', $_SESSION ['customer'] ['name'], 'さん。'; // } else { // echo 'ログイン名またはパスワードが違います。'; // } ?>
退会済みユーザー

退会済みユーザー

2017/03/09 02:12 編集

何をして欲しいの? 会社の業務としてやっているんなら、社内に聞ける人いないの?
marimokomokmOk

2017/03/09 02:12

var_dump($stmt); を追加したら、 object(PDOStatement)#2 (1) { ["queryString"]=> string(51) "select * from customer where login=? and password=?" } array(0) { } が表示されました。
退会済みユーザー

退会済みユーザー

2017/03/09 02:13

質問なら受け付けますがただの結果報告されても困ります。
marimokomokmOk

2017/03/09 03:10

object(PDOStatement)#2 (1) { ["queryString"]=> string(51) "select * from customer where login=? and password=?" } array(0) { } は、prepareメソッドが返したPDOStatement型の文オブジェクトなのでしょうか。
退会済みユーザー

退会済みユーザー

2017/03/09 03:13

そう書いている object(PDOStatement)
marimokomokmOk

2017/03/09 03:16

社内に聞ける人いません 個人的に勉強しています
marimokomokmOk

2017/03/09 03:16

自社内開発の会社ですが、先輩は業務で忙しく聞けません
marimokomokmOk

2017/03/09 03:19

ご解答下さりありがとうございます
退会済みユーザー

退会済みユーザー

2017/03/09 03:24 編集

後輩を教育するのは先輩の仕事、赤の他人がすることじゃない。 社員が業務上の問題を抱えているのに、サポートできないというのは、組織に問題があると思います。問題を抱えていて苦しんでいること自体を、あなた自身が、声を上げない限り、会社はその問題に気づきません。それは、会社にとってもあなた自身にとっても不幸です。
marimokomokmOk

2017/03/09 03:33

とても助かります。ありがとうございます。
退会済みユーザー

退会済みユーザー

2017/03/09 03:47

さすがに、「何が聞きたいの?」とか、そういう確認させないでください。質問だけじゃなく、コメントも同様です。途中でめんどくさくなります。
guest

0

根本的なところとして、データ自体に「姿」はありません。人間が使いやすいように割り当てているものなのです。

というより、(本来やれないことを無理やり行おうとしているとか、そういう特殊な場面でない限り)クラスの内部構造は、プログラミングで使うだけであれば知るべきではないものです。内部がどれだけ変わろうが、用意されたインターフェースを使えば適切な値を返す、それがカプセル化のメリットなのです。

投稿2017/03/09 01:32

maisumakun

総合スコア145184

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

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

marimokomokmOk

2017/03/09 03:20

ありがとうございます。 高度なご解答ですのでよく考えて見ます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問