前提・実現したいこと
android studioを使ってアプリを開発していて,phpを利用してデータベースに接続し,中身(行)を更新したいです.
発生している問題・エラーメッセージ
データベースの中身を更新させたいのですが,通信エラーとなります. 書き込み,削除はできるのですが,更新だけできません.(volleyを使っています.) 通信エラーの原因と解決策等ご存知の方いらっしゃれば,ご教授ください.
該当のソースコード
(android studio) @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.menuSend) { if (!name.getText().toString().equals("") && !date.getText().toString().equals("")) { startVolley(); } } return true; } private void startVolley() { //queue RequestQueue updateQueue = Volley.newRequestQueue(this); //URL String UPDATE_URL="https://~.php"; StringRequest updateReq=new StringRequest(Request.Method.POST,UPDATE_URL, new Response.Listener<String>() { @Override public void onResponse(String s) { Toast.makeText(UpdateActivity.this,"通信成功", Toast.LENGTH_SHORT).show(); } }, new Response.ErrorListener(){ @Override public void onErrorResponse(VolleyError error){ Toast.makeText(UpdateActivity.this,"通信失敗", Toast.LENGTH_SHORT).show(); } }){ @Override protected Map<String, String> getParams(){ //更新する行のidを取得 Intent intent = getIntent(); int id = intent.getIntExtra("id", -1); Toast.makeText(UpdateActivity.this,Integer.toString(id), Toast.LENGTH_SHORT).show(); //今回は[名前]と[内容]を設定 Map<String, String> params = new HashMap<>(); params.put("UpdateId",Integer.toString(id)); params.put("UpdateName",name.getText().toString()); params.put("UpdateDate",date.getText().toString()); return params; } }; updateQueue.add(updateReq); } (php) <?php if(isset($_POST['UpdateId'])&&isset($_POST['UpdateDate'])&&isset($_POST['UpdateName'])){ try{ $db = new PDO('mysql:host=~;dbname=~;charset=utf8','ユーザーid','パスワード'); $sqldata = $db->prepare('UPDATE テーブル名 SET date = :date, name = :name WHERE id = :id'); $sqldata -> bindvalue(':date',$_POST['UpdateDate']); $sqldata -> bindvalue(':name',$_POST['UpdateName']); $sqldata -> bindvalue(':id',(int)$_POST['UpdateId'],PDO::PARAM_INT); $sqldata->execute(); $db=null; }catch(Exception $e){ } } ?>
試したこと
同じようにvolleyを利用して削除,書き込み,読込はできています.
URLの書き間違えもありません.
また,phpの文法エラーも特にありませんでした.
書き込み処理とではsql文以外は同じ処理(コード)を行っています.
あなたの回答
tips
プレビュー