在Android中显示PHP错误


Display PHP error in Android

我有一个应用程序,它使用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
}