Java 谁可以使用localhost phpmyadmin将数据插入mysql数据库?
我试图通过wamp服务器将一行插入我的msql数据库。数据库位于本地主机上 我使用android stuido作为ide,在日志中没有任何错误或警告。我找不到我的代码有什么问题。我猜问题在于是httpclient还是php文件,因为新的用户名和密码已成功传递到Java 谁可以使用localhost phpmyadmin将数据插入mysql数据库?,java,php,android,mysql,phpmyadmin,Java,Php,Android,Mysql,Phpmyadmin,我试图通过wamp服务器将一行插入我的msql数据库。数据库位于本地主机上 我使用android stuido作为ide,在日志中没有任何错误或警告。我找不到我的代码有什么问题。我猜问题在于是httpclient还是php文件,因为新的用户名和密码已成功传递到NewProductActivty.java。如何解决这个问题 以下是我的java和php代码: functions.php: <?php $DB_HOST = "localhost"; $DB_DATABASENAME = "kim
NewProductActivty.java
。如何解决这个问题
以下是我的java和php代码:
functions.php
:
<?php
$DB_HOST = "localhost";
$DB_DATABASENAME = "kimnerede";
$DB_USERNAME = "root";
$DB_PASS = "";
define("BASARISIZ", "-1");
define("BASARILI", "1");
define("ARKADAS_BULUNAMADI_ERROR", "-2");
define("ARKADAS_ZATEN_MEVCUT_ERROR", "-3");
define("PROFIL_BULUNAMADI_ERROR", "-4");
function dbConnect() {
$db = mysqli_connect(DB_HOST, DB_DATABASENAME, DB_PASS, DB_USERNAME);
if (!$db)
return null;
mysqli_query($db, 'SET NAMES utf8');
return $db;
}
<?php
//require_once('functions.php');
include('functions.php');
if((!isset($_POST['name']) || empty($_POST['name'])) &&
(!isset($_POST['pass']) || empty($_POST['pass'])))
die(BASARISIZ);
$name= $_POST['name'];
$pass= $_POST['pass'];
$db = dbConnect();
if(arkadasEkle($db, $name, $pass))
die(BASARILI);
die(BASARISIZ);
?>
addclient.php
:
<?php
$DB_HOST = "localhost";
$DB_DATABASENAME = "kimnerede";
$DB_USERNAME = "root";
$DB_PASS = "";
define("BASARISIZ", "-1");
define("BASARILI", "1");
define("ARKADAS_BULUNAMADI_ERROR", "-2");
define("ARKADAS_ZATEN_MEVCUT_ERROR", "-3");
define("PROFIL_BULUNAMADI_ERROR", "-4");
function dbConnect() {
$db = mysqli_connect(DB_HOST, DB_DATABASENAME, DB_PASS, DB_USERNAME);
if (!$db)
return null;
mysqli_query($db, 'SET NAMES utf8');
return $db;
}
<?php
//require_once('functions.php');
include('functions.php');
if((!isset($_POST['name']) || empty($_POST['name'])) &&
(!isset($_POST['pass']) || empty($_POST['pass'])))
die(BASARISIZ);
$name= $_POST['name'];
$pass= $_POST['pass'];
$db = dbConnect();
if(arkadasEkle($db, $name, $pass))
die(BASARILI);
die(BASARISIZ);
?>
通过在LoginActivity.java
中创建对象来调用此类:
public void SignUpClicked(View view) {
new NewProductActivity(this).execute(UserName.getText().toString(),Password.getText().toString());
}
如果没有收到任何错误,则应确保在php.ini文件中将其设置为错误: 另外,请确保已设置:
error_reporting = E_ALL & ~E_NOTICE
connection.php
<?php
$connection = mysqli_connect("localhost", "root", "", "kimnerede") or die("unable to connect to the database");
?>
<?php
$name = $_REQUEST['name'];
$pass = $_REQUEST['pass'];
include_once("connection.php");
$query = "INSERT INTO deneme123 (name, pass) VALUES ('$name', '$pass')";
mysqli_query($connection, $query) or die("unable to execute the query");
?>
将此行添加到清单文件中
<uses-permission android:name="android.permission.INTERNET" />
你很容易被认为应该访问你的数据库,而这应该有助于防止Chropices邮递员在Chrome中扩展,检查你的PHP是否在运行。永远不要存储明文密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u hash()
。在散列之前,请确保您在它们上安装或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。您能告诉我在asynctask中上下文值在哪里声明以及为什么使用它吗?哪个值作为参数传递给onPostExecute?asynctask为什么使用参数?在InsertData.php中,为什么使用$\u REQUEST而不是$\u POST?顺便谢谢你的帮助!上下文在活动中声明。context=getApplicationContext();它用于显示进度对话框&Toast(上下文是Toast和ProgressDialog中的一个强制参数)布尔值是onPostExecute中使用的参数。如果添加数据操作已完成,则doInBackground中将返回true。否则,返回false。在onPostExecute中,检查该布尔值是否为true或false。AsyncTask 1)。Params,执行时发送到任务的参数类型。2). 进度,后台计算期间发布的进度单位的类型。3). 结果,背景计算结果的类型。请参阅:-$\u请求是旧请求。可以通过get或POST获取数据
public class DBOperations {
public boolean addDataToDB(String name, String pass){
try{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://www.sample.com/phpfilelocation/insertData.php");
List<NameValuePair> nameValuePairs = new ArrayList<>();
nameValuePairs.add(new BasicNameValuePair("name", name));
nameValuePairs.add(new BasicNameValuePair("pass", pass));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httpPost);
return true;
}
catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
catch(Exception e){
e.printStackTrace();
return false;
}
}
}
public class NewProductActivity extends AsyncTask<String, Void, Boolean>{
String name, pass;
ProgressDialog progressDialog;
DBOperations dbo = new DBOperations():
public NewProductActivity(String name, String pass){
this.name = name;
this.pass = pass;
}
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(context, "Please wait", "Sending data...", true);
}
@Override
protected Boolean doInBackground(String... params) {
try{
boolean added = dbo.addDataToDB(name, pass);
return added;
}
catch(Exception e){
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
if(result){
Toast.makeText(context, "successfully added.", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(context, "failed to add data.", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();
}
}
new NewProductActivity("name", "pass").execute();
<uses-permission android:name="android.permission.INTERNET" />