【发布时间】:2016-12-02 17:59:57
【问题描述】:
当我通过浏览器直接访问PHP的链接时,它会在数据库中创建一个空记录。但是,当我使用应用程序发送数据时,它会失败。
Java:
protected String doInBackground(String... params) {
String reg_url = "http://www.minigameserver.square7.ch/register.php";
String user_name = params[0];
String user_ac = params[1];
String user_pw = params[2];
try {
URL url = new URL(reg_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream OS = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS,"UTF-8"));
String data = URLEncoder.encode("user_name","UTF-8")+"="+URLEncoder.encode(user_name,"UTF-8")+"&"+
URLEncoder.encode("user_ac","UTF-8")+"="+URLEncoder.encode(user_ac,"UTF-8")+"&"+
URLEncoder.encode("user_pw","UTF-8")+"="+URLEncoder.encode(user_pw,"UTF-8");
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
OS.close();
httpURLConnection.disconnect();
return "done!";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "fail!";
}
当我运行应用程序时,按摩“完成!”显示出来了。
所以,没有异常发生。但是,为什么没有新记录呢?
我看到有人用 teset 的用户名注册很累。他介意告诉谁做的,这样我就可以追踪这个帖子。
当我尝试 Arshak 提供的代码时。出现以下错误。 E/Surface:getSlotFromBufferLocked:未知缓冲区:0x7f7d9eaad530
注册.php:
<?php
require "db_connect.php";
$user_name = $_POST["user_name"];
$user_ac = $_POST["user_ac"];
$user_pw = $_POST["user_pw"];
$user_pw_enc = md5($user_pw);
$sql = "INSERT INTO user(user_name, user_ac, user_pw) VALUES ('$user_name', '$user_ac', '$user_pw_enc')";
$sql2 = "SELECT * FROM user WHERE user_name = '$user_name'";
$result2 = $conn->query($sql2);
$sql3 = "SELECT * FROM user WHERE user_ac = '$user_ac'";
$result3 = $conn->query($sql3);
if($result2->num_rows == 0 && $result3->num_rows == 0){
if ($conn->query($sql) === TRUE)
echo "Your account is created successfully!\nYou can login now!";
else
echo "Error: " . $sql . "<br>" . $conn->error;
}
else {
if($result2->num_rows > 0)
echo "The user name is used!<br>";
if($result3->num_rows > 0)
echo "The user account is used!<br>";
}
?>
【问题讨论】:
-
您可能在客户端犯了一些错误尝试检查服务器端的error_log
-
您是否记录了参数值,或者它为空!
-
你得到的响应字符串是什么?请始终提供完整的信息。
-
@U.Swap,你的意思是 backgroundTask.execute(user_name_s,user_ac_s,user_pw_s);?
-
@KeroroChan 如果您想通知用户有关评论,请在用户名前使用
@。