#環境
- apache2.4
- PHP7.3
- MySQL5.7
(ローカルホストで動作しています)
#問題
curlにてhttp://~~~?(パラメータ)
を投げた際に、MySQL上のテーブルを操作するプログラムを作成したいのですが。
パラメータ要素
- function
- name
- amount
下記コードで一番目のケース(deleteall)を実行する際は上手く動作するのですが、
それ以降のケースが動作しません。
具体例
動作OK:http://~~~?function=deleteall
動作不可:http://~~~?function=addstock&name=test&amount=2332
php
1<?php 2$link = new mysqli("localhost", "root","pass","stocker"); 3$function = $_GET["function"]; 4$name= $_GET["name"]; 5$amountTmp = $_GET["amount"]; 6echo($amountTmp); 7function is_decimal($value) { 8 return filter_var($value, \FILTER_VALIDATE_INT) !== false; 9} 10$flag = is_decimal($amountTmp); 11 12switch($function){ 13 case "deleteall": 14 $sqlQDel= "truncate table stocker"; 15 $result = $link->query($sqlQDel); 16 var_dump($result); 17 $link->close(); 18 case "addstock": 19 if ($flag === true) 20 exit("ERROR"); 21 $sqlQInert = "insert into stocker (name ,amount) values('$name','$amountTmp')"; 22 var_dump($sqlQInert); 23 $result = $link->query($sqlQInert); 24 var_dump($result); 25 $link->close(); 26 case "checkstock": 27 $sqlQCheck = "select select name,amount from stocker WHERE name = '$name'"; 28 $state = $link->query($sqlQ); 29 var_dump($state); 30 $link->close(); 31 // case "sell": 32 33} 34?> 35
#問題詳細追加
クエリ文をvar_dumpで確認したところ、
そもそも変数に値が入って居ない事が確認できました。
php
1 case "addstock": 2 if ($flag === true) 3 exit("ERROR"); 4 $sqlQInert = "insert into stocker (name ,amount) values('$name','$amountTmp')"; 5 var_dump($sqlQInert); 6 $result = $link->query($sqlQInert); 7 var_dump($result); 8 $link->close(); 9
実行Curl
curl http://13.112.97.12/stocker/?function=addstock&name=test&amount=2344
結果
string(48) "insert into stocker (name ,amount) values('','')"
この様にパラメータが複数渡される場合、
$_GET['キー名']では複数の項目の取得はできないのでしょうか?
回答1件
あなたの回答
tips
プレビュー