我有一个应用程序,它使用AsyncTask连接到MySQL数据库。我可以连接到数据库并输入数据。但我想知道是否有办法将PHP生成的错误消息返回到Android Toast。
I.E.电子邮件地址区域已存在
安卓代码(如果需要)
private class InsertData extends AsyncTask<String, Void, Boolean>
{
ProgressDialog dialog = new ProgressDialog(Register.this);
@Override
protected void onPreExecute()
{
dialog.setMessage("Sending Data...");
dialog.show();
}
@Override
protected Boolean doInBackground(String... urls)
{
for(String url1 : urls)
{
try
{
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("fname", fname));
pairs.add(new BasicNameValuePair("lname", lname));
pairs.add(new BasicNameValuePair("email", email));
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url1);
post.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response = client.execute(post);
}
catch (ClientProtocolException e)
{
Toast.makeText(Register.this, e.toString(), Toast.LENGTH_LONG).show();
return false;
}
catch(IOException e)
{
Toast.makeText(Register.this, e.toString(), Toast.LENGTH_LONG).show();
return false;
}
}
return true;
}
@Override
protected void onPostExecute(Boolean result)
{
if(result == true)
{
Toast.makeText(Register.this, "Insert Success", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(Register.this, "Error", Toast.LENGTH_LONG).show();
}
dialog.dismiss();
}
}
PHP代码(如果需要)
<?php
if( isset($_POST['fname']) && isset($_POST['lname']) && isset($_POST['email'])))
{
$lnk1= mysqli_connect("localhost", "admin", "pass") or die("Couldnt connect to SQL SERVER");
//die("Connected to SERVER");
mysqli_select_db($lnk1, "my_db") or die("Couldnt select db");
//die("Connected to DATABASE");
$reg = $_POST['reg'];
$fn = strip_tags($_POST['fname']);
$ln = strip_tags($_POST['lname']);
$em = strip_tags($_POST['email']);
/*Register Code
if($reg)
{
$reg_errors = "";
$e_check_rows = mysqli_num_rows(mysqli_query($lnk1, "SELECT email FROM users WHERE email = '$em'"));
if(strlen($em)>0 && $e_check_rows >0)
$reg_errors.="$em has already been registered";
if(strlen($em)>0 && (!preg_match("#[@]#", $em)||!preg_match("#[.]#", $em)||!preg_match("#^[a-zA-Z0-9.@_-]+$#", $em)))
$reg_errors.="$em is not a valid email address";
echo $reg_errors;
if(empty($reg_errors))
{
*/
//encryt password
$salt = dechex(mt_rand(0, 2147483647)).dechex(mt_rand(0, 2147483647));
$password = hash('sha256', $pw . $salt);
for($round = 0; $round < 65536; $round++)
{
$password = hash('sha256', $password.$salt);
}
//users entry
mysqli_query($lnk1, "INSERT INTO users (fname, lname, email) VALUES ('$fn', '$ln', '$em')");
}
}
?>
SQL应该可以解决您的问题。我会查询您的数据库,以检查输入的字段是否与存储在您数据库中的电子邮件匹配。
例如
$chkuser = "select from users
where email = '$em'";
$cku = $dbc->query($chkuser);
因为$em是您插入的内容。我会在您输入数据之前运行此检查。只需根据查询检查num_rows
的结果检查变量。如果结果大于0,则可能会传递错误。像这样
$num = $cku->num_rows;
if ($num == 0) {
//execute the query you already have listed
}
else {
//error message
}