无法从android php连接插入MySql Db


Cannot insert into MySql Db from android php connection

我正在使用Android-Studio制作一个小MySql Crund,数据获取工作正常,但我无法插入数据库,我认为问题可能是因为缺乏编写权限(也许?

无论如何,在给定的点上,用户处于Register.java Activity并按下按钮进行注册。这将调用方法onClick() switch case R.id.BtRegs 。这将调用调用ServerRequests classregisterUser 方法。在doInBackground中,我try使用我的网络局域网的 IP 连接到我的本地主机,用POST方法调用Register.php。它不会从 Register.php 返回任何内容。如何检查是否确实缺少其他事情的许可?我认为这可能是没有权限的,因为用于获取数据的相同方法效果很好。

以下是ServerRequests class上进行连接的代码部分:

@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();

这是插入MySQL的Register.php

<?php
$con = mysqli_connect("host", "user", "pass", "db");
$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO tabuser (name, age, username, password) VALUES (?,?,?,?) ");
mysqli_stmt_bind_param($statement, "siss", $name, $age, $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>

注意:考虑SERVER_ADDRESS = "http://192.168.x.x"$con = mysqli_connect("host", "user", "pass", "db");通常设置在主项目上。

问题解决了:

正如@Redbeard011010评论的那样,缺乏commit导致了这个问题。

因此,在我添加的代码上:

$mysqli->autocommit(FALSE);
//do the inserting
if (!$mysqli->commit()) {
print("Transaction commit failed'n");
exit();
}

在此之后,代码正常工作,数据入到数据库中。更多信息在这里