回答編集履歴

2

PDO bindValue()コードサンプルを追加

2017/12/31 08:37

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -24,6 +24,28 @@
24
24
 
25
25
  echo $_GET['tag'];
26
26
 
27
+
28
+
29
+ //DB格納の例
30
+
31
+ try {
32
+
33
+ $db = new PDO('mysql:dbname=データベース名;host=ホスト名', 'ユーザー名', 'パスワード');
34
+
35
+ $stm = $db->prepare('INSERT INTO ... WHERE カラム名 = ? ...');
36
+
37
+ $stm->bindValue(1, $access_url, PDO::PARAM_STR); //文字列として格納
38
+
39
+ $stm->execute();
40
+
41
+ }
42
+
43
+ catch (PDOException $e) {
44
+
45
+ echo $e->getMessage();
46
+
47
+ }
48
+
27
49
  ```
28
50
 
29
51
 

1

DBエスケープについて追記

2017/12/31 08:37

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -1,4 +1,8 @@
1
1
  `$_SERVER`というPHPのスーパーグローバル変数はサーバーに来た生の情報が入っているので、マルチバイト文字は`urldecode()`でデコードしなければなりません。一方、特定のURLクエリ情報を連想配列で保持している`$_GET`は既にデコード済みの値が入っています。
2
+
3
+
4
+
5
+ DBに格納する場合は、URLエンコードされたままの文字列でも構いませんが、エスケープしなければならない文字列があるはずなので、PDOであれば`bindValue()`や`bindParam()`を使って格納します。
2
6
 
3
7
 
4
8