2013-07-06 73 views
0

我想发送2个文本变量到php服务器并将它们存储在数据库中,并且这是代码
但我得到那个吐司(错误)地点在catch 问题在哪里?通过Android编程将数据插入到PHP数据库

的Android端

public class MainActivity extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ArrayList nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("name","android")); 
     nameValuePairs.add(new BasicNameValuePair("mob","203040")); 
     //http post 
     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://apptest.ir/test/recive.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      Toast.makeText(this,"Data Send !",Toast.LENGTH_SHORT).show(); 
     } 
     catch(Exception e) 
     { 
      Toast.makeText(this,"Error !",Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 
     } 
    } 
} 

,这是PHP文件

<?php 
$name = isset($_POST['name']) ? $_POST['name'] : ''; 
$mob = isset($_POST['mob']) ? $_POST['mob'] : ''; 
$ins = "INSERT INTO table1 (name,mob) VALUES ('$name','$mob')"; 
$link = mysql_connect('localhost', 'user1', 'pass1'); 
if (!$link) {die('Not Conected');} 
echo 'Conected'; 
$db_selected = mysql_select_db('test', $link); 
if (!$db_selected) {die ('Can\'t use table1 : ');} 
echo 'Database is Selected'.'<br />'; 
$saved=mysql_query($ins); 
if($saved){echo "Data STORED";} 
?> 
+0

首先,没有这样的事情作为一个PHP数据库。你可以在它前面有一个php web服务的数据库。其次,如果您需要帮助,请发布异常的堆栈跟踪。虽然在这种情况下我可以告诉你它是什么 - 你不能在UI线程上发出HTTP请求,你需要在Thread或AsyncTask中完成。 –

回答

0

没有堆栈跟踪是很难让我们看到的问题。但我想这个问题是因为你正在从onCreate做“网络”的东西。从版本3.0到更新的这些网络东西,您应该在Thread或AsyncTask中运行。但你可以尝试通过把下一行放在onCreate(...)

if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = 
     new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    }