Php 如何仅使用一个值更新列中的行值
我想在android上构建一个扫描器,扫描的值将在mysql中更新列上的数据库,但我想更新该列上与扫描值匹配的所有行,然后用文本“matched value”更新另一列 我寻找解决方案,但从未得到此类问题的解决方案,通常只更新列中的单行(单个单元格) 以下是我的PHP代码:Php 如何仅使用一个值更新列中的行值,php,android,mysql,Php,Android,Mysql,我想在android上构建一个扫描器,扫描的值将在mysql中更新列上的数据库,但我想更新该列上与扫描值匹配的所有行,然后用文本“matched value”更新另一列 我寻找解决方案,但从未得到此类问题的解决方案,通常只更新列中的单行(单个单元格) 以下是我的PHP代码: <?php include 'db/db_connect.php'; $response = array(); //Check for mandatory parameters if(isset($_POST['sc
<?php
include 'db/db_connect.php';
$response = array();
//Check for mandatory parameters
if(isset($_POST['scanned_text'])&&isset($_POST['movie_id'])){
$movieId = $_POST['movie_id'];
$scannedText = $_POST['scanned_text'];
//Query to update a movie
//$query = "SELECT movie_id from movies";
$query = "UPDATE movies SET scanned_text=? WHERE movie_id=?";
//Prepare the query
if($stmt = $con->prepare($query)){
//Bind parameters
$stmt->bind_param("si",$scannedText,$movieId);
//Exceting MySQL statement
$stmt->execute();
//Check if data got updated
if($stmt->affected_rows == 1){
$response["success"] = 1;
$response["message"] = "Movie successfully updated";
}else{
//When movie is not found
$response["success"] = 0;
$response["message"] = "Movie not found";
}
}else{
//Some error while updating
$response["success"] = 0;
$response["message"] = mysqli_error($con);
}
}else{
//Mandatory parameters are missing
$response["success"] = 0;
$response["message"] = "missing mandatory parameters";
}
//Displaying JSON response
echo json_encode($response);
?>
我想设置movie\u id=scanned\u text的位置,然后将其他列值更新为“matched value”或类似内容
这是我的android代码
package com.bani.loginandregistration;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.SparseArray;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.bani.loginandregistration.helper.CheckNetworkStatus;
import com.bani.loginandregistration.helper.HttpJsonParser;
import com.google.android.gms.vision.CameraSource;
import com.google.android.gms.vision.Detector;
import com.google.android.gms.vision.barcode.Barcode;
import com.google.android.gms.vision.barcode.BarcodeDetector;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class MovieUpdateDeleteActivity extends AppCompatActivity {
private static final String KEY_SUCCESS = "success";
private static final String KEY_DATA = "data";
private static final String KEY_MOVIE_ID = "movie_id";
private static final String KEY_UPDATE_TIME = "update_time";
private static final String KEY_CUST_ORDER = "cust_order";
private static final String KEY_DOC_DATEAWAL = "doc_dateawal";
private static final String KEY_MOVIE_NAME = "movie_name";
private static final String KEY_GENRE = "genre";
private static final String KEY_DN_NO = "dn_no";
private static final String KEY_INV_NO = "inv_no";
private static final String KEY_REMARK = "remark";
private static final String KEY_TYPE = "type";
private static final String KEY_YEAR = "year";
private static final String KEY_SCANNED_TEXT = "scanned_text";
private static final String KEY_RATING = "rating";
private static final String KEY_MATERIAL_NUMBER = "material_number";
private static final String KEY_MATERIAL_NAME = "material_name";
private static final String KEY_CAR_TYPE = "car_type";
private static final String KEY_DN_DATEAWAL= "dn_dateawal";
private static final String KEY_SHIP_DATEAWAL = "ship_dateawal";
private static final String BASE_URL = "https://adm-parts.xyz/movies/";
//private static final String BASE_URL =
"http://admspddatabase.000webhostapp.com/movies/";
//private static final String BASE_URL = "http://192.168.43.197/movies/";
private String movieId;
private EditText movieNameEditText;
private EditText genreEditText;
private EditText updateTimeEditText;
private EditText custOrderEditText;
private EditText docDateAwalEditText;
private EditText dnNoEditText;
private EditText invNoEditText;
private EditText remarkEditText;
private EditText typeEditText;
private EditText yearEditText;
private EditText ratingEditText;
private EditText materialNumberEditText;
private EditText materialNameEditText;
private EditText carTypeEditText;
private EditText dnDateAwalEditText;
private EditText shipDateAwalEditText;
private String scanned;
private String movieName;
private String updateTime;
private String custOrder;
private String docDateAwal;
private String genre;
private String dnNo;
private String invNo;
private String remark;
private String type;
private String year;
private String rating;
private String materialNumber;
private String materialName;
private String carType;
private String dnDateAwal;
private String shipDateAwal;
private int success;
private ProgressDialog pDialog;
SurfaceView surfaceView;
TextView txtBarcodeValue;
private CameraSource cameraSource;
private static final int REQUEST_CAMERA_PERMISSION = 201;
String intentData = "";
boolean isEmail = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_movie_update_delete);
Intent intent = getIntent();
movieNameEditText = findViewById(R.id.txtMovieNameUpdate);
genreEditText = findViewById(R.id.txtGenreUpdate);
updateTimeEditText = findViewById(R.id.txtUpdateTimeUpdate);
custOrderEditText = findViewById(R.id.txtCustOrderUpdate);
docDateAwalEditText = findViewById(R.id.txtDocDateAwalUpdate);
dnNoEditText = findViewById(R.id.txtDnNoUpdate);
invNoEditText = findViewById(R.id.txtInvNoUpdate);
remarkEditText = findViewById(R.id.txtRemarkUpdate);
typeEditText = findViewById(R.id.txtTypeUpdate);
yearEditText = findViewById(R.id.txtYearUpdate);
ratingEditText = findViewById(R.id.txtRatingUpdate);
materialNumberEditText = findViewById(R.id.txtMaterialNumberUpdate);
materialNameEditText = findViewById(R.id.txtMaterialNameUpdate);
carTypeEditText = findViewById(R.id.txtCarTypeUpdate);
dnDateAwalEditText = findViewById(R.id.txtDnDateAwalUpdate);
shipDateAwalEditText = findViewById(R.id.txtShipDateAwalUpdate);
txtBarcodeValue = findViewById(R.id.txtBarcodeValue);
movieId = intent.getStringExtra(KEY_MOVIE_ID);
new FetchMovieDetailsAsyncTask().execute();
initViews();
}
private void initViews() {
CompoundButton scan = findViewById(R.id.switch_scan);
txtBarcodeValue = findViewById(R.id.txtBarcodeValue);
surfaceView = findViewById(R.id.surfaceView);
txtBarcodeValue.setVisibility(View.GONE);
surfaceView.setVisibility(View.GONE);
scan.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
surfaceView.setVisibility(View.VISIBLE);
txtBarcodeValue.setVisibility(View.VISIBLE);
} else {
surfaceView.setVisibility(View.GONE);
txtBarcodeValue.setVisibility(View.GONE);
}
}
});
}
private void initialiseDetectorsAndSources() {
//Toast.makeText(getApplicationContext(), "Barcode scanner started", Toast.LENGTH_SHORT).show();
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(this)
.setBarcodeFormats(Barcode.ALL_FORMATS)
.build();
cameraSource = new CameraSource.Builder(this, barcodeDetector)
.setRequestedPreviewSize(1920, 1080)
.setAutoFocusEnabled(true) //you should add this feature
.build();
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
if (ActivityCompat.checkSelfPermission(MovieUpdateDeleteActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
cameraSource.start(surfaceView.getHolder());
} else {
ActivityCompat.requestPermissions(MovieUpdateDeleteActivity.this, new
String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
cameraSource.stop();
}
});
barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
@Override
public void release() {
//Toast.makeText(getApplicationContext(), "Barcode scanner has been stopped", Toast.LENGTH_SHORT).show();
}
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> barcodes = detections.getDetectedItems();
if (barcodes.size() != 0) {
txtBarcodeValue.post(new Runnable() {
@Override
public void run() {
if (barcodes.valueAt(0).email != null) {
txtBarcodeValue.removeCallbacks(null);
intentData = barcodes.valueAt(0).email.address;
txtBarcodeValue.setText(intentData);
isEmail = true;
} else {
isEmail = false;
intentData = barcodes.valueAt(0).displayValue;
txtBarcodeValue.setText(intentData);
scanned = intentData;
//startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(intentData)));
updateMovie();
}
}
});
}
}
});
}
@Override
protected void onPause() {
super.onPause();
cameraSource.release();
}
@Override
protected void onResume() {
super.onResume();
initialiseDetectorsAndSources();
}
/**
* Fetches single movie details from the server
*/
@SuppressLint("StaticFieldLeak")
private class FetchMovieDetailsAsyncTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//Display progress bar
pDialog = new ProgressDialog(MovieUpdateDeleteActivity.this);
pDialog.setMessage("Loading Order Details. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
HttpJsonParser httpJsonParser = new HttpJsonParser();
Map<String, String> httpParams = new HashMap<>();
httpParams.put(KEY_MOVIE_ID, movieId);
JSONObject jsonObject = httpJsonParser.makeHttpRequest(
BASE_URL + "get_movie_details.php", "GET", httpParams);
try {
int success = jsonObject.getInt(KEY_SUCCESS);
JSONObject movie;
if (success == 1) {
//Parse the JSON response
movie = jsonObject.getJSONObject(KEY_DATA);
updateTime = movie.getString(KEY_UPDATE_TIME);
custOrder = movie.getString(KEY_CUST_ORDER);
docDateAwal = movie.getString(KEY_DOC_DATEAWAL);
movieName = movie.getString(KEY_MOVIE_NAME);
genre = movie.getString(KEY_GENRE);
dnNo = movie.getString(KEY_DN_NO);
invNo = movie.getString(KEY_INV_NO);
remark = movie.getString(KEY_REMARK);
type = movie.getString(KEY_TYPE);
year = movie.getString(KEY_YEAR);
rating = movie.getString(KEY_RATING);
materialNumber = movie.getString(KEY_MATERIAL_NUMBER);
materialName = movie.getString(KEY_MATERIAL_NAME);
carType = movie.getString(KEY_CAR_TYPE);
dnDateAwal = movie.getString(KEY_DN_DATEAWAL);
shipDateAwal = movie.getString(KEY_SHIP_DATEAWAL);
scanned = movie.getString(KEY_SCANNED_TEXT);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
pDialog.dismiss();
runOnUiThread(new Runnable() {
public void run() {
//Populate the Edit Texts once the network activity is finished executing
updateTimeEditText.setText(updateTime);
custOrderEditText.setText(custOrder);
docDateAwalEditText.setText(docDateAwal);
movieNameEditText.setText(movieName);
genreEditText.setText(genre);
dnNoEditText.setText(dnNo);
invNoEditText.setText(invNo);
remarkEditText.setText(remark);
typeEditText.setText(type);
yearEditText.setText(year);
ratingEditText.setText(rating);
materialNumberEditText.setText(materialNumber);
materialNameEditText.setText(materialName);
carTypeEditText.setText(carType);
dnDateAwalEditText.setText(dnDateAwal);
shipDateAwalEditText.setText(shipDateAwal);
txtBarcodeValue.setText(scanned);
}
});
}
}
/**
* Checks whether all files are filled. If so then calls UpdateMovieAsyncTask.
* Otherwise displays Toast message informing one or more fields left empty
*/
private void updateMovie() {
String STRING_EMPTY = "";
if (!STRING_EMPTY.equals(updateTimeEditText.getText().toString()) &&
!STRING_EMPTY.equals(custOrderEditText.getText().toString()) &&
!STRING_EMPTY.equals(docDateAwalEditText.getText().toString()) &&
!STRING_EMPTY.equals(movieNameEditText.getText().toString()) &&
//!STRING_EMPTY.equals(genreEditText.getText().toString()) &&
!STRING_EMPTY.equals(dnNoEditText.getText().toString()) &&
!STRING_EMPTY.equals(invNoEditText.getText().toString()) &&
!STRING_EMPTY.equals(remarkEditText.getText().toString()) &&
!STRING_EMPTY.equals(typeEditText.getText().toString()) &&
!STRING_EMPTY.equals(yearEditText.getText().toString()) &&
!STRING_EMPTY.equals(ratingEditText.getText().toString())&&
!STRING_EMPTY.equals(materialNumberEditText.getText().toString())&&
!STRING_EMPTY.equals(materialNameEditText.getText().toString())&&
!STRING_EMPTY.equals(carTypeEditText.getText().toString())&&
!STRING_EMPTY.equals(dnDateAwalEditText.getText().toString())&&
!STRING_EMPTY.equals(shipDateAwalEditText.getText().toString())) {
updateTime = updateTimeEditText.getText().toString();
custOrder = custOrderEditText.getText().toString();
docDateAwal = docDateAwalEditText.getText().toString();
movieName = movieNameEditText.getText().toString();
genre = genreEditText.getText().toString();
dnNo = dnNoEditText.getText().toString();
invNo = invNoEditText.getText().toString();
remark = remarkEditText.getText().toString();
type = typeEditText.getText().toString();
year = yearEditText.getText().toString();
rating = ratingEditText.getText().toString();
materialNumber = materialNumberEditText.getText().toString();
materialName = materialNameEditText.getText().toString();
carType = carTypeEditText.getText().toString();
dnDateAwal = dnDateAwalEditText.getText().toString();
shipDateAwal = shipDateAwalEditText.getText().toString();
new UpdateMovieAsyncTask().execute();
} else {
Toast.makeText(MovieUpdateDeleteActivity.this,
"One or more fields left empty!",
Toast.LENGTH_LONG).show();
}
}
/**
* AsyncTask for updating a movie details
*/
@SuppressLint("StaticFieldLeak")
private class UpdateMovieAsyncTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//Display progress bar
pDialog = new ProgressDialog(MovieUpdateDeleteActivity.this);
pDialog.setMessage("Updating Order Data. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
HttpJsonParser httpJsonParser = new HttpJsonParser();
Map<String, String> httpParams = new HashMap<>();
//Populating request parameters
httpParams.put(KEY_MOVIE_ID, movieId);
httpParams.put(KEY_UPDATE_TIME, updateTime);
httpParams.put(KEY_CUST_ORDER, custOrder);
httpParams.put(KEY_DOC_DATEAWAL, docDateAwal);
httpParams.put(KEY_MOVIE_NAME, movieName);
httpParams.put(KEY_GENRE, genre);
httpParams.put(KEY_DN_NO, dnNo);
httpParams.put(KEY_INV_NO, invNo);
httpParams.put(KEY_REMARK, remark);
httpParams.put(KEY_TYPE, type);
httpParams.put(KEY_YEAR, year);
httpParams.put(KEY_RATING, rating);
httpParams.put(KEY_MATERIAL_NUMBER, materialNumber);
httpParams.put(KEY_MATERIAL_NAME, materialName);
httpParams.put(KEY_CAR_TYPE, carType);
httpParams.put(KEY_DN_DATEAWAL, dnDateAwal);
httpParams.put(KEY_SHIP_DATEAWAL, shipDateAwal);
httpParams.put(KEY_SCANNED_TEXT, scanned);
JSONObject jsonObject = httpJsonParser.makeHttpRequest(
BASE_URL + "update_movie.php", "POST", httpParams);
try {
success = jsonObject.getInt(KEY_SUCCESS);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
pDialog.dismiss();
runOnUiThread(new Runnable() {
public void run() {
if (success == 1) {
//Display success message
Toast.makeText(MovieUpdateDeleteActivity.this,
"Order Data Updated", Toast.LENGTH_LONG).show();
Intent i = getIntent();
//send result code 20 to notify about movie update
setResult(20, i);
finish();
} else {
Toast.makeText(MovieUpdateDeleteActivity.this,
"You don't make any changes or some error occurred!",
Toast.LENGTH_LONG).show();
}
}
});
}
}
}
package com.bani.loginandregistration;
导入android.Manifest;
导入android.annotation.SuppressLint;
导入android.app.AlertDialog;
导入android.app.ProgressDialog;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.pm.PackageManager;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.ActivityCompat;
导入android.support.v7.app.AppActivity;
导入android.util.SparseArray;
导入android.view.SurfaceHolder;
导入android.view.SurfaceView;
导入android.view.view;
导入android.view.Window;
导入android.view.WindowManager;
导入android.widget.Button;
导入android.widget.CompoundButton;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.bani.loginandregistration.helper.CheckNetworkStatus;
导入com.bani.loginandregistration.helper.HttpJsonParser;
导入com.google.android.gms.vision.CameraSource;
导入com.google.android.gms.vision.Detector;
导入com.google.android.gms.vision.barcode.barcode;
导入com.google.android.gms.vision.barcode.barcode检测器;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.IOException;
导入java.util.HashMap;
导入java.util.Map;
公共类MovieUpdateDeleteActivity扩展了AppCompativeActivity{
私有静态最终字符串密钥\u SUCCESS=“SUCCESS”;
私有静态最终字符串键\u DATA=“DATA”;
私有静态最终字符串密钥\u MOVIE\u ID=“MOVIE\u ID”;
私有静态最终字符串键\u UPDATE\u TIME=“UPDATE\u TIME”;
私有静态最终字符串键\u CUST\u ORDER=“CUST\u ORDER”;
私有静态最终字符串KEY\u DOC\u DATEAWAL=“DOC\u DATEAWAL”;
私有静态最终字符串键\u MOVIE\u NAME=“MOVIE\u NAME”;
私有静态最终字符串键\u GENRE=“GENRE”;
私有静态最终字符串键\u DN\u NO=“DN\u NO”;
私有静态最终字符串键\u INV\u NO=“INV\u NO”;
私有静态最终字符串键\u REMARK=“REMARK”;
私有静态最终字符串键\u TYPE=“TYPE”;
私有静态最终字符串密钥\u YEAR=“YEAR”;
私有静态最终字符串键\u SCANNED\u TEXT=“SCANNED\u TEXT”;
私有静态最终字符串键\u RATING=“RATING”;
专用静态最终字符串键\u MATERIAL\u NUMBER=“MATERIAL\u NUMBER”;
私有静态最终字符串键\u MATERIAL\u NAME=“MATERIAL\u NAME”;
专用静态最终字符串KEY\u CAR\u TYPE=“CAR\u TYPE”;
私有静态最终字符串键\u DN\u DATEAWAL=“DN\u DATEAWAL”;
私有静态最终字符串键\u SHIP\u DATEAWAL=“SHIP\u DATEAWAL”;
私有静态最终字符串BASE_URL=”https://adm-parts.xyz/movies/";
//私有静态最终字符串基\u URL=
"http://admspddatabase.000webhostapp.com/movies/";
//私有静态最终字符串BASE_URL=”http://192.168.43.197/movies/";
私人字符串电影ID;
私有EditText movieNameEditText;
私有编辑文本genreEditText;
私有EditText updateTimeEditText;
私有EditText custOrderEditText;
私有EditText docDateAwalEditText;
私有编辑文本dnNoEditText;
私有EditText invNoEditText;
私有编辑文本重新标记编辑文本;
私有编辑文本类型编辑文本;
私人编辑文本;
私有编辑文本比率编辑文本;
私人编辑文本材料编号编辑文本;
私有EditText材质名称EditText;
私有EditText carTypeEditText;
私有编辑文本dnDateAwalEditText;
私有EditText shipDateAwalEditText;
私有字符串扫描;
私有字符串movieName;
私有字符串更新时间;
私有字符串顺序;
私有字符串docDateAwal;
私人弦乐体裁;
私有字符串dnNo;
私有字符串invNo;
私人字符串注释;
私有字符串类型;
私人弦年;
私人字符串评级;
私有字符串物料编号;
私有字符串materialName;
私有字符串类型;
私有字符串dnDateAwal;
私人字符串发货日期;
个人成功;
私人对话;
表面视图表面视图;
TextView txtBarcodeValue;
私人摄像源摄像源;
私有静态最终int请求\摄像机\权限=201;
字符串intentData=“”;
布尔值isEmail=false;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
setContentView(R.layout.activity\u movie\u update\u delete);
Intent=getIntent();
movieNameEditText=findViewById(R.id.txtMovieNameUpdate);
genreEditText=findViewById(R.id.txtGenreUpdate);
updateTimeEditText=findViewById(R.id.txtUpdateTimeUpdate);
custOrderEditText=findViewById(R.id.txtCustOrderUpdate);
docDateAwalEditText=findViewById(R.id.txtDocDateAwalUpdate);
dnNoEditText=findViewById(R.id.txtdnnuUpdate);
invNoEditText=findViewById(R.id.txtinvUpdate);
remarkEditText=findviewbyd(R.id.txtRemarkUpdate);
typeEditText=findViewById(R.id.txtTypeUpdate);
yearEditText=findViewById(R.id.txtYearUpdate);
ratingEditText=findViewById(R.id.txtRatingUpdate);
MaterialNumberItemText=findViewById(R.id.txtMaterialNumberUpdate);
materialNameEditText=findViewById(R.id.txtMaterialNameUpdate);
carTypeEditText=findViewById(R.id.txtCarTypeUpdate);
dnDateAwalEditText=findViewById(R.id.TXTDNDDATEAWALUPDATE);
shipDateAwalEditText=findViewById(R.id.txtShipDateAwalUpdate);
txtBarcodeValue=findViewById(R.id.txtBarcodeValue);
电影ID=