2013-10-30 2 views
0

간단한 POST 요청을 사용하여 MySQL 데이터베이스에 몇 가지 기본 정보를 추가하려고 시도했지만 많은 행운이없는 것 같습니다. 튜플을 추가하지 않습니다 데이터베이스에. 나는이 코드가 요청한 PHP 파일을 실행한다는 것을 알고있다. PHP 파일에 거짓 정보를 추가하도록 지시 한 것처럼 작동하지만, 정상적으로 작동하지만 POST 문자열의 정보는 추가되지 않는다. 여기 Java 및 PHP POST 요청이 작동하지 않습니다.

내 자바 파일입니다

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!"; 
} 

}

그리고 여기 posttest.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); 

?> 

내가 보내고있다 문자열의 인쇄 형식은 다음과 같습니다

id=3696&name=David&steps=6989 

감사합니다. 도움.

+3

요청'아이디의이 유형 = 3696 & 이름 = 데이비드 & 단계 = 6989'은'GET' 아닌 오며 'Post –

+0

입니다 수행합니다'위해서 var_dump ($ _ POST); '실제로 데이터를 보내고 있는지 확인하십시오. 또한 데이터가 나중에 사용자가 제공하게 될 경우 걱정할 SQL 주입 문제가 있습니다. – PeeHaa

+1

@SteAp - OP 코드를 수정하는 것은 아닙니다. 되돌려주세요. –

답변

1

라인

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

구문이 올바르지 않습니다. 포함주십시오) mysqli_query의 말 :

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

이 오류가 수정되었습니다. 감사. –

관련 문제