質問するログイン新規登録

質問編集履歴

4

訂正

2015/03/14 12:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -63,5 +63,7 @@
63
63
  > 値をパラメータにバインドする
64
64
 
65
65
  bindValueメソッドは値を埋め込む処理をしていると勘違いしたため、上記のような質問を致しました。
66
+ bindValueメソッドを記述したところでプレースホルダに値が埋め込まれて一つのSQL文になっているわけではないようです。
66
- 私の中「バイン」=「関連付け」と解釈したところ合点いきした
67
+ executeされることはじめてプリペアステートメント実行され
68
+ executeすることでprepareに記述したSQL文がデータベース側で構文解析され、その後に値を当てはめるようになるようです。
67
69
  ありがとうございました。

3

誤字の修正

2015/03/14 12:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  日本語力のない私は、「バインドする」=「値を埋め込む」と勘違いしました。
60
60
 
61
- PHPマニュアルの「PDOStatement::bindValue」の説明には下記のようにります。
61
+ PHPマニュアルの「PDOStatement::bindValue」の説明には下記のようにバインドすると記述があります。
62
62
 
63
63
  > 値をパラメータにバインドする
64
64
 

2

追記

2015/03/13 11:48

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -45,4 +45,23 @@
45
45
 
46
46
  静的プレースホルダは「SELECT name FROM fruit WHERE price=?」と「1, 100」の命令文を別々にデータベースに送ってデータベース側で結合して実行しているとの認識でおります。
47
47
 
48
- 「手順3」では「SELECT name FROM fruit WHERE price=?」と「1, 100」の命令文を別々にデータベースに送っているのでしょうか?
48
+ 「手順3」では「SELECT name FROM fruit WHERE price=?」と「1, 100」の命令文を別々にデータベースに送っているのでしょうか?
49
+
50
+ **【追記】※2015.03.13 20:33**
51
+
52
+ ※この質問は、luckerさんのお陰で解決済みです。
53
+
54
+ 私の日本語力の無さが原因でした。
55
+ 「安全なSQLの呼び出し方」に下記の説明があります。
56
+
57
+ > パラメータ部分を示す記号「?」のことをプレースホルダと呼び、そこへ実際の値を割り当てることを「バインドする」と呼びます。
58
+
59
+ 日本語力のない私は、「バインドする」=「値を埋め込む」と勘違いしました。
60
+
61
+ PHPマニュアルの「PDOStatement::bindValue」の説明には下記のようになります。
62
+
63
+ > 値をパラメータにバインドする
64
+
65
+ bindValueメソッドは値を埋め込む処理をしていると勘違いしたため、上記のような質問を致しました。
66
+ 私の中で「バインド」=「関連付け」と解釈したところ合点がいきました。
67
+ ありがとうございました。

1

質問の追記

2015/03/13 11:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -23,4 +23,26 @@
23
23
  executeするときにprepareの文とbindValueの値をそれぞれ別々にデータベースに送っているのでしょうか?
24
24
 
25
25
  ご存じの方いれば、ご教示ください。
26
- よろしくお願いいたします。
26
+ よろしくお願いいたします。
27
+
28
+ **【質問追記】※2015.03.13 19:11**
29
+ 質問がわからないとのご指摘を頂きました。
30
+ luckerさん ありがとうございます。
31
+ 私が「バインド」や「プレイペアドステートメント」の意味を正しく理解していないのが原因かと思います。
32
+
33
+ それぞれの言葉を使わずに質問したいと思います。
34
+
35
+ 下記のコードで動作するかと思います。
36
+
37
+ 【手順1】prepare
38
+ $stmt = $pdo->prepare('SELECT name FROM fruit WHERE price=?')
39
+
40
+ 【手順2】bindValue
41
+ $stmt->bindValue(1, 100);
42
+
43
+ 【手順3】execute
44
+ $stmt->execute();
45
+
46
+ 静的プレースホルダは「SELECT name FROM fruit WHERE price=?」と「1, 100」の命令文を別々にデータベースに送ってデータベース側で結合して実行しているとの認識でおります。
47
+
48
+ 「手順3」では「SELECT name FROM fruit WHERE price=?」と「1, 100」の命令文を別々にデータベースに送っているのでしょうか?