回答編集履歴

3

見直し

2020/01/29 01:38

投稿

退会済みユーザー
test CHANGED
@@ -18,13 +18,13 @@
18
18
 
19
19
  $pdo = connect();
20
20
 
21
- $stmt2 = $pdo->prepare("UPDATE User3 SET latlng = ST_GeomFromText('POINT(? ?)') WHERE user_name = ?");
21
+ $stmt2 = $pdo->prepare("UPDATE User3 SET latlng = ST_GeomFromText('POINT(:lng :lan)') WHERE user_name = :user");
22
22
 
23
- $stmt2->bindValue(1, $longitude, PDO::PARAM_INT);
23
+ $stmt2->bindValue(':lng', $longitude, PDO::PARAM_INT);
24
24
 
25
- $stmt2->bindValue(2, $latitude, PDO::PARAM_INT);
25
+ $stmt2->bindValue(':lan', $latitude, PDO::PARAM_INT);
26
26
 
27
- $stmt2->bindValue(3, $login_user, PDO::PARAM_STR);
27
+ $stmt2->bindValue(':user', $login_user, PDO::PARAM_STR);
28
28
 
29
29
  // SQL実行
30
30
 
@@ -33,3 +33,13 @@
33
33
  ```
34
34
 
35
35
  こうなんじゃないかなぁ。
36
+
37
+ (名前付きプレースホルダーに改めてみました。)
38
+
39
+
40
+
41
+ SQL文に直接POSTやGET由来の変数を展開してしまうと、
42
+
43
+ SQLインジェクション攻撃の標的になりかねないため、
44
+
45
+ 上記のようなプレースホルダーを駆使した書き方を身に着けたいものです。

2

見直し

2020/01/29 01:38

投稿

退会済みユーザー
test CHANGED
@@ -16,10 +16,6 @@
16
16
 
17
17
  ```php
18
18
 
19
- $geometry = "ST_GeomFromText('POINT(" + (string)$longitude + " " + (string)$latitude + ")')";
20
-
21
-
22
-
23
19
  $pdo = connect();
24
20
 
25
21
  $stmt2 = $pdo->prepare("UPDATE User3 SET latlng = ST_GeomFromText('POINT(? ?)') WHERE user_name = ?");

1

見直し

2020/01/28 09:11

投稿

退会済みユーザー
test CHANGED
@@ -5,3 +5,35 @@
5
5
  ```
6
6
 
7
7
  って話だったりしない?
8
+
9
+
10
+
11
+ ---
12
+
13
+
14
+
15
+ もしかすると
16
+
17
+ ```php
18
+
19
+ $geometry = "ST_GeomFromText('POINT(" + (string)$longitude + " " + (string)$latitude + ")')";
20
+
21
+
22
+
23
+ $pdo = connect();
24
+
25
+ $stmt2 = $pdo->prepare("UPDATE User3 SET latlng = ST_GeomFromText('POINT(? ?)') WHERE user_name = ?");
26
+
27
+ $stmt2->bindValue(1, $longitude, PDO::PARAM_INT);
28
+
29
+ $stmt2->bindValue(2, $latitude, PDO::PARAM_INT);
30
+
31
+ $stmt2->bindValue(3, $login_user, PDO::PARAM_STR);
32
+
33
+ // SQL実行
34
+
35
+ $stmt2->execute();
36
+
37
+ ```
38
+
39
+ こうなんじゃないかなぁ。