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

回答編集履歴

3

用語訂正

2021/01/03 04:32

投稿

seastar3
seastar3

スコア2287

answer CHANGED
@@ -26,4 +26,4 @@
26
26
  ```
27
27
  のようなSQLでの指定で取り出します。
28
28
 
29
- (tanatさんの御指摘の通り、単純なエスケープではSQL対策として不備があるので、PDOを尊重してプレースフォルダを用いたコードに改善しました。)
29
+ (tanatさんの御指摘の通り、単純なエスケープではSQL対策として不備があるので、PDOを尊重してプレースルダを用いたコードに改善しました。)

2

PDO接続を尊重しセキュリティー対策したコードに改良した。

2021/01/03 04:32

投稿

seastar3
seastar3

スコア2287

answer CHANGED
@@ -15,15 +15,15 @@
15
15
 
16
16
  ```
17
17
  $siteiid = 1010;
18
+
18
- $sql = "SELECT * from chatlog where id = '".htmlspecialchars($siteiid)."'";
19
+ $sql = 'SELECT * FROM chatlog WHERE id = :id';
20
+ $stmt = $dbh->prepare($sql);
21
+ $stmt->bindValue(':id', $siteiid, PDO::PARAM_INT);
22
+ $stmt->execute();
23
+ while( $result = $sth->fetch(PDO::FETCH_ASSOC) ){
24
+ printf("%d|%d|%d\n", $result['id'], $result['name'], $result['log']);
25
+ }
19
26
  ```
20
27
  のようなSQLでの指定で取り出します。
21
- もし複数行ある場合には
28
+
22
- ```
23
- $rows = "";
24
- while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
29
+ (tanatさんの御指摘の通り、単純なエスケープではSQL対策として不備があるので、PDOを尊重してプレースフォルダを用いたコードに改善しました。)
25
- $rows .= $result['id'].' '.$result['name'].' '.$result['log'].'<br>';
26
- }
27
- print($rows);
28
- ```
29
- のような形式で取り出します。

1

SQLインジェクション対策を補強

2021/01/02 16:41

投稿

seastar3
seastar3

スコア2287

answer CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  ```
17
17
  $siteiid = 1010;
18
- $sql = "SELECT * from chatlog where id = '".$siteiid."'";
18
+ $sql = "SELECT * from chatlog where id = '".htmlspecialchars($siteiid)."'";
19
19
  ```
20
20
  のようなSQLでの指定で取り出します。
21
21
  もし複数行ある場合には