Java和PHP POST请求不工作

Java和PHP POST请求不工作,java,php,mysql,http,post,Java,Php,Mysql,Http,Post,我一直在尝试使用一个简单的POST请求向MySQL数据库添加一些基本信息,但我似乎运气不好——它不会向数据库添加元组。 我知道这段代码运行它请求的PHP文件,就像我告诉PHP文件向数据库中添加虚拟信息一样,它工作正常,但是POST字符串中的信息没有被添加 这是我的Java文件: public class Test { public static void main(String[] args) { int id = 3696; String name = "David";

我一直在尝试使用一个简单的POST请求向MySQL数据库添加一些基本信息,但我似乎运气不好——它不会向数据库添加元组。 我知道这段代码运行它请求的PHP文件,就像我告诉PHP文件向数据库中添加虚拟信息一样,它工作正常,但是POST字符串中的信息没有被添加

这是我的Java文件:

public class Test {

public static void main(String[] args) {

    int id = 3696;
    String name = "David";
    int steps = 6989;

    String strData = encode(id, name, steps);
    submit(strData);
}

public static String encode(int id, String name, int steps) {

    String strToSend;

    try
    {
        strToSend = URLEncoder.encode("id", "UTF-8") + "=";
        strToSend += URLEncoder.encode("" + id, "UTF-8");
        strToSend += "&" + URLEncoder.encode("name", "UTF-8") + "=";
        strToSend += URLEncoder.encode(name, "UTF-8");
        strToSend += "&" + URLEncoder.encode("steps", "UTF-8") + "=";
        strToSend += URLEncoder.encode("" + steps, "UTF-8");
    }

    catch (Exception e) {
        return "Error encoding data for submission";
    }

    return strToSend;
}

public static String submit(String strToSend) {

    URL urlDest;
    String strData = strToSend;
    System.out.println(strData);
    HttpURLConnection ucConnect;

    try 
    {
        urlDest = new URL("http://localhost/~David/posttest.php");
    }
    catch (Exception e)
    {
        return "Error in submitting entry";
    }


    try
    {
        ucConnect = (HttpURLConnection) urlDest.openConnection();
        ucConnect.setRequestProperty("Content-type","application/x-www-form-urlencoded");
        ucConnect.setRequestMethod("POST");
        ucConnect.setDoOutput(true);

    }

    catch (Exception e)
    {
        return "Error in connecting to URL";
    }

    try
    {
        OutputStreamWriter streamWrite = new OutputStreamWriter(ucConnect.getOutputStream());
        streamWrite.write(strData);
        System.out.println(streamWrite.toString());
        streamWrite.flush();

        //Get the response

        ucConnect.getInputStream();
        System.out.println(ucConnect);
        streamWrite.close();
    }

    catch (Exception e) 
    {
        return "Problem";
    }

    System.out.println("SUCCESS");
    return "Yay!";
}
}

这里是postest.php

<?php

$con=mysqli_connect(removed);

//check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


$id = $_POST["id"];
$strName = $_POST["name"];
$noSteps = $_POST["steps"];

mysqli_query ($con, "INSERT INTO People VALUES ($id, $strName, $noSteps)" || die();

mysqli_close($con);
echo json_encode($arr);

?>
谢谢你的帮助。

电话线

mysqli_query ($con, "INSERT INTO People VALUES ($id, $strName, $noSteps)" 
  || die();
在语法上是不正确的。请在mysqli_查询的末尾包括a):

mysqli_query ($con, "INSERT INTO People VALUES ($id, $strName, $noSteps)" ) 
  || die();

这种类型的请求
id=3696&name=David&steps=6989
GET
而不是
POST
执行
var\u转储($\u POST)
查看您是否真的在发送数据。此外,如果数据将在以后由用户提供,则需要担心SQL注入问题。@SteAp-修改OP的代码不是您的责任。请回复。@SteAp不修改OP代码的另一个原因是;例如,假设错误实际上是您修改的,然后其他人出现,查看代码并说,“您的代码没有问题”。然后可能会否决该问题或投票结束该问题。现在你明白为什么了吗?@SteAp在编辑问题代码时,你必须小心,不要将问题编辑掉,让每个人都处于WTF状态。
mysqli_query ($con, "INSERT INTO People VALUES ($id, $strName, $noSteps)" ) 
  || die();