【发布时间】:2018-03-13 12:53:30
【问题描述】:
参考堆栈上的各种示例,我编写了以下代码以将数据发送到 MySQL 服务器表,但那里没有上传任何内容。这是我的 Android 方法的代码。
public void sendtoserver(final String data) {
Log.e("LWFAB", "Sending Data to Server");
//Send data to server now
new Thread(new Runnable() {
@Override
public void run() {
try {
URL bulkdataurl = new URL("http://myphp.php?");
HttpURLConnection bulkcon = (HttpURLConnection) bulkdataurl.openConnection();
bulkcon.setConnectTimeout(15000);
bulkcon.setReadTimeout(15000);
bulkcon.setRequestMethod("POST");
bulkcon.setDoOutput(true);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(bulkcon.getOutputStream());
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(bufferedOutputStream));
bufferedWriter.write(data);
bufferedWriter.flush();
bufferedWriter.close();
bufferedOutputStream.close();
bulkcon.connect();
//OutputStreamWriter outputStreamWriter = new OutputStreamWriter(bulkcon.getOutputStream());
//outputStreamWriter.write(data);
//outputStreamWriter.flush();
//Get Server Response
BufferedReader bufferedReader;
bufferedReader = new BufferedReader(new InputStreamReader(bulkcon.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
System.out.println(stringBuilder.toString());
bufferedReader.close();
System.out.println("Sending Bulk Data " + bulkcon);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
我没有收到任何错误。下面是我的php代码
<?php
require_once("../dbconnect.php");
$json = file_get_contents('php://input');
$obj = json_decode($json, true);
error_log(print_r($obj, true));
$array_data = $obj["data"];
print_r($obj["data"]);
foreach ($array_data as $row) {
print_r($row);
$sql = "INSERT INTO test (vid, name,branch,date,time) VALUES ('" . $row["vid"] . "', '" . $row["name"] . "','".$row["branch"]."','".$row["date"]."','".$row["time"]."')";
echo "$sql<br>";
$conn->query($sql);
}
$conn->close();
?>
作为字符串发送的数据示例如下:
{"data":[{"vid":"1","name":"raj","branch":"mech","date":"2-Sep-2017","time":"13:03:24 PM"}]}
如果有什么要解决的,你能指导一下吗?
【问题讨论】:
-
Little Bobby 说 you may be at risk for SQL Injection Attacks。通过parameterized queries 了解Prepared Statements。我推荐
PDO,我推荐wrote a function for,使其比使用非参数化查询更容易、更干净、更安全。此外,This article 可以帮助您在MySQLi和PDO之间进行选择 -
@GrumpyCrouton +1
-
另请注意,您显示的数据不是有效的json,字符串没有被引用。所以
$obj永远是空的。 -
@Panache stackoverflow.com/questions/10329500/… 检查这个,你需要 getString 而不是 getInt
-
JSON 几乎总是一个字符串,所以是的