java - 为什么不能从Android应用程序向MySQL插入数据

标签 java android mysql database phpmyadmin

我已经创建了我的数据库 MySQL,我希望将数据从 android 应用程序发送到数据库中,但我做不到。我正在使用 wamp 服务器。

这是我的 PHP 代码:

<?php mysql_connect("localhost","cupcake","123456");
mysql_select_db("cindy");
$sql=mysql_query("insert into yang (name)values('".$_REQUEST['i_name']."')");
$r=mysql_query($sql);
if(!$r)echo "Error in query: ".mysql_error();mysql_close();?>

这是我在 Android 上的 Java 文件

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);



        String result = null;
        JSONArray jArray;
        InputStream is = null;
        StringBuilder sb=null;


        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

        nameValuePairs.add(new BasicNameValuePair("i_name","aaa"));
        try{     

            HttpClient httpclient = new DefaultHttpClient();

             HttpPost httppost = new HttpPost("http://10.0.2.2/testing.php");
             httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
             HttpResponse response = httpclient.execute(httppost);
             HttpEntity entity = response.getEntity();
             is = entity.getContent();
             }catch(Exception e){
                 Log.e("log_tag", "Error in http connection"+e.toString());
            }



        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
             sb = new StringBuilder();
             sb.append(reader.readLine() + "\n");
             String line="0";
             while ((line = reader.readLine()) != null) {
                            sb.append(line + "\n");        }
              is.close();
              result=sb.toString();
              }catch(Exception e){
                    Log.e("log_tag", "Error converting result "+e.toString());
              }//paring datatry


        try {
            jArray = new JSONArray(result);
           //int[] deal_id=new int[jArray.length()+1];
            JSONObject json_data=null;
            for(int i=0;i<jArray.length();i++){
                   json_data = jArray.getJSONObject(i);
                            }
            }      catch(JSONException e1){
                   } catch (ParseException e1) {
                e1.printStackTrace();   }
          }}

这是我创建的MySQL表

--

CREATE TABLE IF NOT EXISTS `yang` (
  `name` varchar(100) NOT NULL,
  PRIMARY KEY (`name`)
) 

请帮帮我..谢谢...

最佳答案

这种开发可能很难调试,所以我总是使用大量日志记录。

例如,在您的 PHP 中添加:

error_log("正在插入姓名:". $_REQUEST['i_name']);

然后您可以检查服务器错误日志以确保您得到了您期望的结果。不断添加日志语句,直到找到问题为止。

PS:我不是 PHP 专家,但在我看来您的 PHP 容易受到 SQL 注入(inject)攻击,因此您可能不想部署它!

关于java - 为什么不能从Android应用程序向MySQL插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9290891/

相关文章:

java - Eclipse 数据未插入 SQLite 数据库并崩溃

mysql - 无法通过socket '/var/lib/mysql/mysql.sock'连接到本地MySQL服务器(2)

mysql - 在 MySQL 中选择不同的对

java - 如何在Spring Security 4中动态修改登录用户的角色?

java - 如何让java使用毫米而不是像素?

android - 在 Android 中绘制 3D 数学函数

android - 从 android webkit 浏览器获取当前 Url

android - 获取以编程方式创建的按钮以正确实现 9Patch 的填充

mysql - 内连接返回大量重复项

java - 如何将剪贴板中的数据粘贴到文本区域