🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SQL

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

PHP

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

Q&A

解決済

1回答

947閲覧

この文章は何を意味していますか?

higa_yomityu

総合スコア41

SQL

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

PHP

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

0グッド

0クリップ

投稿2021/01/19 22:10

string(5) "Array" object(PDOStatement)#2 (1) { ["queryString"]=> string(41) "SELECT * FROM members WHERE member_id=:id" }

ログイン情報からデータベースの情報を引っ張って来ようとするとローカル上にこの文章が出てきます。

検索はしてみたのですが、
object(PDOStatement)#2→PDOStatementクラスのオブジェクト
queryString→送信先を指定するURLの末尾に特定の形式で表記したもの
どちらも理解ができません。

ローカル上に出てきた文章の意味を教えて下さい。

<?php session_start(); require('connect.php'); //var_dump($_SESSION['id']); if(isset($_SESSION['id']) && $_SESSION['time']+3600>time()){ //$_SESSION['time']を現在の時刻に上書きする $_SESSION['time']=time(); //mysqlの準備 $mems=$db->prepare('SELECT * FROM members WHERE member_id=:id'); //バインド $mems->bindParam(':id',$_SESSION['id'],PDO::PARAM_STR); //mysqlの実行 $mems->execute(); var_dump($mems); //$mem = $mems->fetch(); }else{ //セットされていない時はlogin.phpを開く header('Location:login.php'); exit(); } //データの挿入 if($_POST['check']==='able'){ //ableのデータをpostsテーブルに挿入 $data=$db->prepare('INSERT INTO posts SET member_id=?,data="able",created=date(now())'); $data->execute(array($mem['id'])); //ableのデータをpostsテーブルに挿入 $_SESSION['judge']=$_POST['check']; //main.phpに遷移 header('Location:main.php'); exit(); }elseif($_POST['check']==='wrong'){ //wrongのデータをpostsテーブルに挿入 $data=$db->prepare('INSERT INTO posts SET member_id=?,data="wrong",created=date(now())'); $data->execute(array($mem['id'])); //wrongのでーたをセッションに格納 $_SESSION['judge']=$_POST['check']; //main.phpに遷移 header('Location:main.php'); exit(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="viewport" content="width=device-width,initial-scale=1.0"> <title>絶対!禁煙!!</title> <link rel="stylesheet" href="styl.css"> </head> <body> <div class="all"> <header> <h1> <img src="image_folder/No_Smoking.png" alt="絶対!禁煙!!"> </h1> <p class="use-to"> <a href="useto.php">使い方はこちら</a> </p> </header> <!-- contens --> <h2> 本日の禁煙チャレンジ <?php echo $mem['id'];?> </h2> <P> <?php print(htmlspecialchars($mem['name'],ENT_QUOTES)); ?>さんの禁煙チャレンジ </P> <P> 今日は我慢しましたか? </P> <!-- できたOR失敗を送信 --> <form method="POST" action=""> <button input type="submit" name="check" value="able">できた</button> <button input type="submit" name="check" value="wrong">失敗した</button> </form> </div> </body> </html>

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

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

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

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

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

m.ts10806

2021/01/20 00:06

結局きちんと理解できたのか、フィードバックをください。 同じような質問されても「ベストアンサーにしてるのに理解できてなかったんじゃん」となって 相手してくれる人がいなくなります。 https://teratail.com/help/question-tips#questionTips4-2 正しく理解できてないと、困るのはご自身であり、相手の時間を浪費してるだけになります。
higa_yomityu

2021/01/20 22:27

申し訳ございません。 文章に対する考え方を理解することができました。 そもそも「これはこういう意味」と理解するよりも「そういう機能なんだ」の気持ちで行きます。 あありがとうございました。
guest

回答1

0

ベストアンサー

出てきた情報以上の説明はないです。
下手に例えようとしたり解釈しようとしたりすると本質から離れます。

それぞれの単語に分解して調べるしかないですね。

クラスとはオブジェクトとはクエリストリングとは。
場合によっては「単体」では本質に辿り着けないことも多いでしょうね。
今回のクエリストリングはURL関係ないですから。

むしろ書いたとおりにしか動かないプログラミングにおいて
「文章としての意味」を追い続けることって結構意味がなくて、
「概念」として**「そういうもの」**と捉えておいた方が良いこともあります。

覚えるなら**「どういう機能なのか」**のみ。
その機能が、何を与えて、実行すると何を返してくれるか(input/output)
これだけ確認すれば十分使えるようになります。
ドキュメントも理解できるようになります。

「日本語に訳そうとする人」って多いですが、無駄な作業と思ってます。
結局「自分が分かりやすい文章にしたい」だけで、本質から離れていきます。
その状態で他人に説明しようとしても大抵理解してもらえませんし、
teratailのような場所でアドバイスを得てもその人が言っていることは理解できません。

読むならドキュメントも原文(PHPマニュアルは日本語も精度高いと思いますが原文は英語のはず)を読まないと根本的な理解にはなりません。
「機能の作りから知りたい」ならPHPの元ソース(C言語)ですね。

ログイン情報からデータベースの情報を引っ張って来ようとすると

引っ張ってきてませんね。

$mems->execute();
var_dump($mems);

$memsが保持しているのは結局PDO::prepare()の結果。
PHPマニュアルにある通りPDOStatementです。
execute()しただけで持ってる情報は結局持ってるのはPDOStatementなのでvar_dump()したところで結果を返してくれるわけではないです。
fetch()なりfetchAll()なり「結果セットからデータを取り出す機能」を使う必要があります。

投稿2021/01/19 22:14

編集2021/01/19 23:04
m.ts10806

総合スコア80875

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

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

higa_yomityu

2021/01/20 22:31

fetch()後にprint_rをして見るとデータを引っ張ってこれていることがわかりました。 取り出した跡に出力するんですね。
m.ts10806

2021/01/20 22:50 編集

PHPマニュアル読んでください。 あとprint_rはvar_dumpとほぼ同じ用途でしか使いません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問