我创建了我的数据库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`)
)
请帮帮我......谢谢......
答案 0 :(得分:0)
这种开发可能很难调试,所以我总是会使用大量的日志记录。
例如,在PHP中添加:
error_log(“插入名称:”。$ _REQUEST ['i_name']);
然后,您可以检查服务器错误日志,以确保获得预期的结果。继续添加日志记录语句,直到找到问题为止。
PS:我不是PHP方面的专家,但我觉得你的PHP很容易受到SQL注入攻击,所以你可能不想部署它!答案 1 :(得分:0)
我同意你应该尝试尽可能多地记录日志,看看发生了什么。
我假设您正在将此Android应用程序部署到您的手机或模拟器,对吗?在本机浏览器中,您可以转到http:// 10.0.2.2 /testing.php并验证这不是本地网络连接问题吗?
另外,您是否独立测试过您的PHP代码?你确定它有效吗?
最后,您的PHP脚本容易受到SQL注入攻击。您永远不希望将来自用户的任何数据直接连接到SQL语句中。使用预准备语句来处理此问题。 PHP有一个可以使用的PDO库。这是一个教程(http://www.kitebird.com/articles/php-pdo.html) - 您可以遵循许多其他教程。只需谷歌PHP PDO准备语句教程或其他东西
让我知道您对上述问题的答案。
答案 2 :(得分:0)
您在android java文件中提供localhost地址,即10.0.2.2,据我所知,它不起作用。打开命令提示符并键入ipconfig,然后按Enter键。之后检查你的ip v4地址,它将以192.168开始....复制该地址,如果项目正在运行,则在搜索栏中用这个替换localhost ip。实际上android取域名而不是localhost。并使用它更改为android java文件。希望它会奏效。感谢