无法从android php connection

时间:2015-12-26 23:58:38

标签: java php android mysql android-studio

我正在使用Android-Studio做一点MySql Crud并且数据提取工作得很好但我无法插入到数据库中,我认为问题可能是因为缺少写入权限(可能?)

无论如何,在给定的点上,用户在Register.java Activity并按下按钮进行注册。这会调用onClick()上的方法switch case R.id.BtRegs。这会调用registerUser方法调用ServerRequests class。在doInBackgroundtry中使用我的网络LAN的IP连接到我的localhost,使用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");通常设置在主要项目上。

1 个答案:

答案 0 :(得分:0)

问题已解决:

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

所以,在我添加的代码上:

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

此后,代码正常工作,数据正在插入数据库。 更多信息here