我正在尝试开发一个从mysql表中删除用户的活动。一旦我登录到应用程序,我希望用户如果想要删除他们的帐户,请点击按钮。当我按一下按钮我得到这些错误:使用PHP和MySQL在Android中删除用户
22416-22416/etsiit.etsiitcast_def E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: etsiit.etsiitcast_def, PID: 22416
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
at libcore.io.IoBridge.connect(IoBridge.java:122)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456)
at java.net.Socket.connect(Socket.java:882)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:124)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:149)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
at etsiit.etsiitcast_def.PerfilFragment$1.onClick(PerfilFragment.java:67)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
这是我删除user.php的功能:
<?php
require_once 'connectbd.php';
// connecting to database
$this->db = new DB_Connect();
$this->db->connect();
$query = "DELETE FROM usuarios WHERE username = '$username' LIMIT 1";
mysql_query($query);
if (mysql_affected_rows() == 1) {
echo("El usuario ha sido eliminado.");
} else {
echo("Error al eliminar el usuario.");
}
?>
这里是我的Android活动代码:
Button delete = (Button) rootView.findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://"+IP_Server+"/etsiitcast_db/deleteuser.php";
HttpClient client = new DefaultHttpClient();
try {
client.execute(new HttpGet(url));
} catch(IOException e) {
//do something here
}
}
});
凡IP_SERVER是我的服务器地址。 如果需要更多代码,告诉我。
如果你在网上打开这个php代码,它工作吗?编辑:使用删除限制1没有命令不是一个好方法。结果可能不是唯一的! –
总是读你的logcat。 'android.os.NetworkOnMainThreadException'这是你的问题。 – Bonatti
此外,您可能需要检查HttpClient是否被弃用,并且您应该使用其他连接,例如新的默认HttpURLConnection(但我preffer并建议Volley) – Bonatti