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

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

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

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

PHP

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

Q&A

解決済

3回答

4450閲覧

Sql入門者 WHERE ID = :id; とはどういう意味なのでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

SQL

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

PHP

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

0グッド

0クリップ

投稿2022/02/09 07:22

提示コードのsql文のコードですが以下のコードのID=:id;とはどういう意味なのでしょうか?参考サイトのように比較について調べましたがヒットしません。

参考サイト: https://www.postgresql.jp/document/8.0/html/functions-comparison.html
イメージ説明

php

1'SELECT password FROM Account WHERE ID = :id;';

php

1<!DOCTYPE html> 2<html lang=ja> 3 <head> 4 <meta charset="utf-8"> 5 6 <link rel="stylesheet" href="style.css"> 7 <title>send</title> 8 </head> 9 10 <body> 11 12<?php 13ini_set("display_errors",1); 14error_reporting(E_ALL); 15?> 16<?php 17try 18{ 19 $password = password_hash($_POST["password"],PASSWORD_DEFAULT); 20 $id = $_POST["id"]; 21 $dsn = 'mysql:dbname=Bulletin_Board;host=localhost;charset=utf8'; 22 $dbh = new PDO($dsn,"root",""); 23 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 24 25 26 $sql = 'SELECT password FROM Account WHERE ID = :id;'; 27 28 29 $stmt = $dbh->prepare($sql); 30 $stmt->bindParam(':id', $_POST['id']); 31 //$stmt->bindParam(':password', $password); 32 $stmt->execute(); 33 34 35 $result = $stmt->fetch(); 36 if(password_verify($_POST["password"],$result['password']) == true) 37 { 38 echo "true"; 39 } 40 else 41 { 42 echo "false"; 43 } 44 45} 46catch(PDOException $e) 47{ 48 die($e->getMessage()); 49} 50?> 51</body> 52 53</html> 54

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

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

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

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

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

guest

回答3

0

自分が何を書いているのか1行ずつ日本語で考えてみてください。

php

1// SQL文の作成 2$sql = 'SELECT password FROM Account WHERE ID = :id;'; 3// PDOのprepareメソッドにSQL文を放り込む 4$stmt = $dbh->prepare($sql); 5// PDOのbindParamメソッドで:idにユーザーが入力したidを放り込む、ここで安全なSQL文に変換される 6$stmt->bindParam(':id', $_POST['id']);

ユーザーが入力した内容をそのままSQL文に組み込むのはセキュリティー的によくないので、(SQLインジェクションで調べてください)
安全なSQL文をPHPのプリペアドステートメントの機能で生成しています。
ここまでではSQLを実行していません。安全なSQL文の文字列を作って準備しているだけです。

php

1// 作ったSQL文の実行 2$stmt->execute();

で初めて作ったSQL文を実行しています。

参考サイト: https://kinocolog.com/pdo_prepare/

投稿2022/02/09 08:59

rokuemon99

総合スコア40

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

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

0

ベストアンサー

参考サイトがpostgreになっていますが、PDOの記載はmysqlですね
どちらかに統一されたほうがよろしいかと

文が実行されるときに実際の値に置き換えられる 0 個もしくはそれ以上の名前 (:name) もしくは疑問符 (?) パラメータマークを含むことができます

上記の「名前」を指定する記述方法です

投稿2022/02/09 08:42

編集2022/02/09 08:45
yambejp

総合スコア114769

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

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

0

コードがMySQL接続してるのに参照しているドキュメントがPostgreSQLで、しかも非常に古いドキュメントを参照しているのが謎なのですけど、
SQL本体じゃないです。
PHPのコードの問題。
プリペアドステートメント

パラメータとかバインドどか、コード見てれば何となく想像もつきそうなもんですが?(質問者自身の過去質問より引用)

$sql = 'SELECT name FROM Account WHERE ID = :id;';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':id', $_POST['id']);

過去コメントから「気づけばプロ並み~~」を利用しているようですが、そこに何も説明がないと思えません。
本当に何も説明がないなら不備なので出版社に問い合わせを。
参考書のコードだけ見てプログラミング身につくことは絶対にないので、
これまでのやり口からして「ちゃんと読んでない。理解してない」のは明白。
読んで理解してください。
何度も指摘されているはずです。体系的な学習をしろと。

投稿2022/02/09 07:30

編集2022/02/09 07:35
m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2022/02/09 07:38

一度一通り読み終えたのでちょっと自分で改造しながらやってるんだけどつまずいてしまいました。
m.ts10806

2022/02/09 07:39 編集

単に眺めただけで理解してないのに改造できるわけがなく。
退会済みユーザー

退会済みユーザー

2022/02/09 07:58

一回参考書通り記述して実践しました。
m.ts10806

2022/02/09 08:03

同じこと何回も書いてますけど、理解してたらこんな質問するはずがなく。 これまで幾度となく受けてきたアドバイスが全く何も生きてない所から、「書いただけなんだろうな」としか。
m.ts10806

2022/02/09 09:23

読まれなさそうですね。解決した(と自分だけが思った)らもう過去はなかったことになる人のようですし。 今回同じPHPマニュアルのページを複数人から提示されてるので、 読んでなかったらそれこそ「前言ったじゃん」てなるんですけど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問