回答編集履歴

1

e

2022/02/27 20:34

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -1,3 +1,10 @@
1
+ 問題は大きく3点(細かい点は除く)
2
+
3
+ 1. SQLとして正しい形ではない =>PHPから直に実行するのではなくDBに対して直に実行して想定の結果を得られるか先に確認すべき
4
+ 2. プリペアドステートメントとして正しい形ではない=>PHPマニュアルで基本を理解すべき
5
+ 3. エラーハンドリングされていない
6
+
7
+
1
8
  ```php
2
9
  $diplay = "hogehoge";
3
10
  $statement = sprintf("insert into users ('display_name') values (%s)",$diplay);
@@ -6,7 +13,7 @@
6
13
  ```
7
14
 
8
15
  $statementって変数名にしてるけど、保持されてるのはinsertから始まる単なる文字列です。
9
- がシングルクォート(MySQLはダブルでも良いようだが)で囲われていないとSQLではエラーです。
16
+ 値がシングルクォート(MySQLはダブルでも良いようだが)で囲われていないとSQLではエラーです。
10
17
  更に、提示の書き方ではエスケープされないのでSQLインジェクション可能です。
11
18
  また、カラムがシングルクォートで囲われてると「文字列」として扱われるので、それはそれでマズいのでは(全角カラム名とかならいけたかな?使うべきではないが)
12
19