質問編集履歴
3
変数名修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
$function = $_GET["function"];
|
44
44
|
|
45
|
-
$nae
|
45
|
+
$name= $_GET["name"];
|
46
46
|
|
47
47
|
$amountTmp = $_GET["amount"];
|
48
48
|
|
2
問題文修正
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","
|
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
問題の詳細追加
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","
|
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
|
-
|
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
|
-
|
43
|
+
var_dump($sqlQInert);
|
84
44
|
|
85
45
|
$result = $link->query($sqlQInert);
|
86
46
|
|
87
|
-
|
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
|
-
|
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['キー名']では複数の項目の取得はできないのでしょうか>
|