回答編集履歴

2

加筆

2021/05/18 06:43

投稿

退会済みユーザー
test CHANGED
@@ -84,13 +84,9 @@
84
84
 
85
85
 
86
86
 
87
- ?>
87
+ header('Location: http://~~~/~~~/index.php');
88
88
 
89
- ここらへんに結果表示用のHTMLを記述
89
+ exit();
90
-
91
- $row_count にINSERT INTO文によって挿入されたレコード数が入ってくるはずなので、
92
-
93
- それを使って結果表示の分岐に使ったらいいんじゃないかなと。
94
90
 
95
91
  ```
96
92
 
@@ -99,3 +95,9 @@
99
95
  POSTやGETなどで外部から来た値を直接SQL文文字列に連結しないでくださいね、
100
96
 
101
97
  今話題のSQLインジェクション攻撃を喰らいますし。
98
+
99
+
100
+
101
+ index.phpが入力フォームで、index1.phpがデータベースへの登録処理(のみ)の構造かな。
102
+
103
+ だとすると、header()関数でリダイレクトさせるような出力をすれば良さそうな気がする。

1

見直し

2021/05/18 06:42

投稿

退会済みユーザー
test CHANGED
@@ -29,3 +29,73 @@
29
29
  質問者さんがやったこと、遭遇したことが再現できません。
30
30
 
31
31
  話はそれから。
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ ```php
40
+
41
+ <?php
42
+
43
+
44
+
45
+ $local = 'localhost';
46
+
47
+ $user_name = 'root';
48
+
49
+ $pass = '';
50
+
51
+ $db_name='ph23_sample';
52
+
53
+
54
+
55
+ $name = $_GET['name'];
56
+
57
+ $age = $_GET['age'];
58
+
59
+
60
+
61
+ // ホントはここに$nameや$ageの検証処理を置くべき
62
+
63
+
64
+
65
+ $link = mysqli_connect($local, $user_name, $pass, $db_name);
66
+
67
+ mysqli_set_charset($link,'utf8');
68
+
69
+
70
+
71
+ //これがベース!!
72
+
73
+ $stmt = mysqli_prepare($link, "INSERT INTO sample(name, age) VALUES (?, ?)");
74
+
75
+ mysqli_stmt_bind_param($stmt, "si", $name, $age);
76
+
77
+ mysqli_stmt_execute($stmt);
78
+
79
+ $row_count = mysqli_stmt_affected_rows($stmt);
80
+
81
+
82
+
83
+ mysqli_close($link);
84
+
85
+
86
+
87
+ ?>
88
+
89
+ ここらへんに結果表示用のHTMLを記述
90
+
91
+ $row_count にINSERT INTO文によって挿入されたレコード数が入ってくるはずなので、
92
+
93
+ それを使って結果表示の分岐に使ったらいいんじゃないかなと。
94
+
95
+ ```
96
+
97
+ みたいな感じ?(あくまで机上のコード)
98
+
99
+ POSTやGETなどで外部から来た値を直接SQL文文字列に連結しないでくださいね、
100
+
101
+ 今話題のSQLインジェクション攻撃を喰らいますし。