2

我无法从 mysql 数据库中获取数据。我制作了一个 android 应用程序,它连接到 mysql db 并使用 php 脚本获取数据....当我运行代码时,它抛出异常字符串无法转换为 jsonarray.... 还指导我将我的 php 脚本放在 XAMP PHP 脚本中的位置:

$con = mysql_connect("localhost","root","");
 if (!$con)
 {
   die('Could not connect: ' . mysql_error());
 }
 mysql_select_db("login",$con);
 $sql=mysql_query("SELECT * FROM category ORDER BY `category`.`category` ASC");
 while($row=mysql_fetch_assoc($sql))
 $output[]=$row;
  print(json_encode($output));
  mysql_close($con);

代码:-

tv=(TextView)findViewById(R.id.textView1);
    String result = null;
    InputStream is = null;
    StringBuilder sb = null;
    ArrayList nameValuePairs = new ArrayList();
    List r = new ArrayList();
    try{
    //http post
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://ip../xampp/htdocs/db.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
    }
    catch(Exception e){
    Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
    }
    //Convert response to string
    try
    {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
    sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null)
    {
    sb.append(line +"\n");
    }
    is.close();
    result = sb.toString();
    }
    catch(Exception e)
    {
    Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
    }
    //END Convert response to string
    try{
    JSONArray jArray = new JSONArray(result);
    JSONObject json_data=null;
    for(int i=0;i<jArray.length();i++) {
    json_data = jArray.getJSONObject(i);
    tv.append(json_data.getString("category").toString()+"\n");
    }

    }
    catch(JSONException e1){
    Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
    } catch (ParseException e1) {
    Toast.makeText(getBaseContext(),e1.toString() ,Toast.LENGTH_LONG).show();
    }
4

1 回答 1

1

通过php从mysql取值到android的方法如下:

假设您有一个登录活动

用户输入用户名和密码。现在捕获两个值并发送到 php 脚本。它的android代码如下:

btnlogin.setOnClickListener(new View.OnClickListener()
        {
                public void onClick(View v)
            {   

                        uname=username.getText().toString();
                        upass=password.getText().toString();
                        HttpClient client = new DefaultHttpClient();

                        tem="http://10.0.2.2:80/verify-login.php?username="+uname+"&password="+upass;
                        HttpGet request = new HttpGet(tem);
                        try
                        {
                            HttpResponse response=client.execute(request);
                            HttpEntity entity=response.getEntity();
                            InputStream is=entity.getContent();
                            InputStreamReader isr = new InputStreamReader(is);
                            BufferedReader reader = new BufferedReader(isr);
                            result=reader.readLine();   
                        } 

                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }

                        if(result.equals("0")==true)
                        {
                            Toast.makeText(getApplicationContext(), "Sorry try again", 1500).show();

                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "Welcome Client", 1500).show();
                            myIntent=new Intent(login_page.this,Welcome_page.class);

                        }
                    }

        });

在 php 脚本方面。从数据库中获取值并返回到android的代码如下:

<?php

    mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("login") or die(mysql_error());

    $username=$_REQUEST['username'];
    $password=$_REQUEST['password'];
    $SelectQuery="select * from EmpLogin where C_Username='$username' and C_Password='$password'";
    $result=mysql_query($SelectQuery) or die(mysql_error());

    $count=mysql_num_rows($result);
    $row=mysql_fetch_array($result);
    if($count==0)
        echo "0";
    else
        echo $row['c_id'];
?>

这样您就可以从 DB 中获取值并发送回 android。希望这可以帮助你。如果您有任何疑问,请随时问我。

于 2013-06-06T09:36:34.023 回答