質問編集履歴

3

変数名修正

2020/05/24 10:54

投稿

rayleonard
rayleonard

スコア9

test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  $function = $_GET["function"];
44
44
 
45
- $naem = $_GET["name"];
45
+ $name= $_GET["name"];
46
46
 
47
47
  $amountTmp = $_GET["amount"];
48
48
 

2

問題文修正

2020/05/24 10:54

投稿

rayleonard
rayleonard

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,44 @@
1
+ #環境
2
+
3
+ - apache2.4
4
+
5
+ - PHP7.3
6
+
7
+ - MySQL5.7
8
+
9
+ (ローカルホストで動作しています)
10
+
11
+ #問題
12
+
13
+ curlにてhttp://~~~?(パラメータ)
14
+
15
+ を投げた際に、MySQL上のテーブルを操作するプログラムを作成したいのですが。
16
+
17
+ パラメータ要素
18
+
19
+ - function
20
+
21
+ - name
22
+
23
+ - amount
24
+
25
+
26
+
27
+ 下記コードで一番目のケース(deleteall)を実行する際は上手く動作するのですが、
28
+
29
+ それ以降のケースが動作しません。
30
+
31
+ 具体例
32
+
33
+ 動作OK:http://~~~?function=deleteall
34
+
35
+ 動作不可:http://~~~?function=addstock&name=test&amount=2332
36
+
37
+ ```php
38
+
1
39
  <?php
2
40
 
3
- $link = new mysqli("localhost", "root","Ikuikumario3@","stocker");
41
+ $link = new mysqli("localhost", "root","pass","stocker");
4
42
 
5
43
  $function = $_GET["function"];
6
44
 
@@ -68,6 +106,8 @@
68
106
 
69
107
 
70
108
 
109
+ ```
110
+
71
111
  #問題詳細追加
72
112
 
73
113
  クエリ文をvar_dumpで確認したところ、
@@ -106,4 +146,4 @@
106
146
 
107
147
  この様にパラメータが複数渡される場合、
108
148
 
109
- $_GET['キー名']では複数の項目の取得はできないのでしょうか
149
+ $_GET['キー名']では複数の項目の取得はできないのでしょうか

1

問題の詳細追加

2020/05/24 10:34

投稿

rayleonard
rayleonard

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,46 +1,6 @@
1
- #環境
2
-
3
- OS:centos 7.7
4
-
5
- php:7.3系
6
-
7
- httpd:2.4系
8
-
9
- MySQL:5.7系
10
-
11
- (ローカルホスト上にあり)
12
-
13
- #課題
14
-
15
- Curlから送られたURLパラメータを受け取ってその値でMySQLを操作したい
16
-
17
- - 具体例
18
-
19
- http://~~~/?function=xxx&name=yyy&count=ttt
20
-
21
- パラメータは?以降
22
-
23
-
24
-
25
- #問題点
26
-
27
- 下記のコードにて対象サーバにCurlをした際、一番最初の全件削除は動作がするのですが、
28
-
29
- その後の条件のテーブル操作が反映されません。
30
-
31
-
32
-
33
- テーブル操作可能:http://~~~/?function=deleteall
34
-
35
- テーブル操作不可:function=addstock&name=test&amount=100
36
-
37
-
38
-
39
- ```php
40
-
41
1
  <?php
42
2
 
43
- $link = new mysqli("localhost", "root","pass","stocker");
3
+ $link = new mysqli("localhost", "root","Ikuikumario3@","stocker");
44
4
 
45
5
  $function = $_GET["function"];
46
6
 
@@ -68,7 +28,9 @@
68
28
 
69
29
  $result = $link->query($sqlQDel);
70
30
 
71
- echo $result;
31
+ var_dump($result);
32
+
33
+ $link->close();
72
34
 
73
35
  case "addstock":
74
36
 
@@ -76,28 +38,72 @@
76
38
 
77
39
  exit("ERROR");
78
40
 
79
- $sqlQInert = "insert into stocker (name ,amount) values($name,$amountTmp)";
41
+ $sqlQInert = "insert into stocker (name ,amount) values('$name','$amountTmp')";
80
42
 
81
- echo $name;
82
-
83
- echo $amountTmp;
43
+ var_dump($sqlQInert);
84
44
 
85
45
  $result = $link->query($sqlQInert);
86
46
 
87
- echo $result;
47
+ var_dump($result);
48
+
49
+ $link->close();
88
50
 
89
51
  case "checkstock":
90
52
 
91
- $sqlQCheck= "select select name,amount from stocker WHERE name = $name";
53
+ $sqlQCheck = "select select name,amount from stocker WHERE name = '$name'";
92
54
 
93
55
  $state = $link->query($sqlQ);
94
56
 
95
- echo $state;
57
+ var_dump($state);
96
58
 
59
+ $link->close();
97
60
 
61
+ // case "sell":
62
+
63
+
98
64
 
99
65
  }
100
66
 
101
67
  ?>
102
68
 
69
+
70
+
71
+ #問題詳細追加
72
+
73
+ クエリ文をvar_dumpで確認したところ、
74
+
75
+ そもそも変数に値が入って居ない事が確認できました。
76
+
77
+ ```php
78
+
79
+ case "addstock":
80
+
81
+ if ($flag === true)
82
+
83
+ exit("ERROR");
84
+
85
+ $sqlQInert = "insert into stocker (name ,amount) values('$name','$amountTmp')";
86
+
87
+ var_dump($sqlQInert);
88
+
89
+ $result = $link->query($sqlQInert);
90
+
91
+ var_dump($result);
92
+
93
+ $link->close();
94
+
95
+
96
+
103
97
  ```
98
+
99
+ 実行Curl
100
+
101
+ curl http://13.112.97.12/stocker/?function=addstock&name=test&amount=2344
102
+
103
+ 結果
104
+
105
+ string(48) "insert into stocker (name ,amount) values('','')"
106
+
107
+ この様にパラメータが複数渡される場合、
108
+
109
+ $_GET['キー名']では複数の項目の取得はできないのでしょうか>