Java 无法从android php连接插入MySql数据库
我使用安卓Studio做了一些工作,数据获取工作正常,但我无法插入数据库,我认为问题可能是因为没有写入权限(可能?) 无论如何,在给定的点上,用户处于并按下按钮进行注册。这将调用Java 无法从android php连接插入MySql数据库,java,php,android,mysql,android-studio,Java,Php,Android,Mysql,Android Studio,我使用安卓Studio做了一些工作,数据获取工作正常,但我无法插入数据库,我认为问题可能是因为没有写入权限(可能?) 无论如何,在给定的点上,用户处于并按下按钮进行注册。这将调用switch case R.id.BtRegs上的方法onClick()。这将调用调用的registerUser方法。在doInBackgroundI中,尝试使用使用POST方法调用网络lan的IP连接到本地主机。 它不会从Register.php返回任何内容。 我如何检查它是否确实是缺乏其他事情的许可?我认为这可能是不
switch case R.id.BtRegs
上的方法onClick()。这将调用调用的registerUser
方法。在doInBackground
I中,尝试使用使用POST
方法调用网络lan的IP连接到本地主机。
它不会从Register.php返回任何内容。
我如何检查它是否确实是缺乏其他事情的许可?我认为这可能是不允许的,因为用于获取数据的相同方法工作得很好
以下是执行连接的ServerRequests类
上的代码部分:
@Override
protected Void doInBackground(Void... params) {
Map<String,String> dataToSend = new HashMap<>();
dataToSend.put("name", user.name);
dataToSend.put("age", String.valueOf(user.age));
dataToSend.put("username", user.username);
dataToSend.put("password", user.password);
String encodedStr = getEncodedData(dataToSend);
BufferedReader reader = null;
try{
URL url = new URL(SERVER_ADDRESS + "/Register.php");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(CONNECTION_TIMEOUT);
con.setReadTimeout(CONNECTION_TIMEOUT);
con.setRequestMethod("POST");
con.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
writer.write(encodedStr);
writer.flush();
注意:考虑服务器地址=”http://192.168.x.x“
和$con=mysqli_connect(“主机”、“用户”、“通行证”、“数据库”)代码>通常设置在主项目上。问题已解决:
正如@Redbeard011010所评论的,缺少commit
导致了这个问题
因此,在我添加的代码上:
$mysqli->autocommit(FALSE);
//do the inserting
if (!$mysqli->commit()) {
print("Transaction commit failed\n");
exit();
}
在此之后,代码正常工作,数据被插入数据库。
更多信息请阅读和。不确定您的本地主机是什么意思?你的设备的本地主机将是你的设备,而不是你的计算机。它实际上设置为本地网络上的我的计算机(比如192.168…),我刚刚用本地主机上传了这个项目。正如我所说,它可以很好地处理抓取,但不能处理插入。您可以尝试提交更改,以确定问题是否在于自动提交设置为关闭?我相信这会导致这种行为。您可以通过在脚本末尾添加几行代码来测试这一点,如下所示:在我看来,这不一定就是问题所在,但这是我可以提供的所有建议。
$mysqli->autocommit(FALSE);
//do the inserting
if (!$mysqli->commit()) {
print("Transaction commit failed\n");
exit();
}