2016-08-18 30 views
0

我已經成功創建了一個mysql數據庫,並試圖用php文件填充它。android,php和mysql之間的通信失敗

的PHP的代碼如下所示:

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $userid = $_POST['userid']; 
    $time = $_POST['time']; 
    $button = $_POST['button']; 
    $weight = $_POST['weight']; 
    $sex = $_POST['sex']; 

    $sql = "INSERT INTO beerconsumption (userid, time, button, weight, sex) 
    VALUES ('userid', 'time', 'button', 'weight', 'sex')"; 
    // use exec() because no results are returned 
    $conn->exec($sql); 
    echo "New record created successfully"; 
    } 
    catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
?> 

如果我mannualy調用PHP文件時,它確實讓entrys只是0。如果我改變線路

VALUES ('1', 'time', 'button', 'weight', 'sex')"; 

它把一個一個在桌子的第一個字段中。 但如果我使用郵遞員或我的Android應用程序發佈不同的值,它仍然只是發佈0.

此刻我只是沒有得到過錯。

Android的腳本:

public void sendData(){ 

    StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 

     } 
    }, new Response.ErrorListener(){ 
     @Override 
     public void onErrorResponse(VolleyError error){ 

     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> parameters = new HashMap<String, String>(); 
      parameters.put("verify", "******"); 
      parameters.put("userid",userID); 
      parameters.put("time",Long.toString(java.lang.System.currentTimeMillis())); 
      parameters.put("button", Integer.toString(button)); 
      parameters.put("weight",Integer.toString(calc.person.getWeight())); 
      parameters.put("sex",Integer.toString(calc.person.getSex())); 

      return parameters; 
     } 
    }; 
    requestQueue.add(request); 
} 
+0

你正在嘗試將*字符串*「userid」插入到userid字段中嗎? – Bert

+0

我想通過php腳本插入android應用程序中給出的用戶標識到mysql數據庫中。 –

+0

嘗試此查詢INSERT INTO beerconsumption(userid,time,button,weight,sex)VALUES('「。$ userid。」',''。$ time。「','。。$ button。」','「 。$ weight。「''''。$ sex。」')' – Karthi

回答

0

我做了一些研究,並改變了我的PHP代碼:

<?php 
define('HOST','localhost'); 
define('USER','***'); 
define('PASS','***'); 
define('DB','***'); 
$con = mysqli_connect(HOST,USER,PASS,DB); 

$userid = $_POST['userid']; 
$time = $_POST['time']; 
$button = $_POST['button']; 
$weight = $_POST['weight']; 
$sex = $_POST['sex']; 

$sql = "insert into beerconsumption (userid,time,button,weight,sex) values ('$userid','$time','$button','$weight','$sex')"; 
if(mysqli_query($con,$sql)){ 
    echo 'success'; 
} 
else{ 
    echo 'failure'; 
} 
mysqli_close($con); 
?> 

這似乎運作良好,但我現在有一定的安全疑慮。這是全部轉移在純文本是不是?

1

我用你的代碼測試其完美的工作,可能你檢查你的表單提交和POST數據。

<?php 
$servername="localhost"; 
$dbname="android"; 
$username="root"; 
$password="root"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sql = "INSERT INTO so(a,b,c,d,e) VALUES ('1', 'time', 'button', 'weight', 'sex')"; 
    // use exec() because no results are returned 
    $conn->exec($sql); 
    echo "New record created successfully"; 
    } 
    catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
?> 
+0

如果我運行腳本就像你發佈它,那麼它只是使用1,0,0,0,0每次新的條目我怎麼才能得到它從Android應用程序發佈的值? –

+0

您可以獲取數據從android應用程序,所以你只使用JSON解析或使用一些網絡庫。所以問題是android方面 – Karthi

+0

你確定嗎?因爲如果我用postman插件測試Chrome,它不會工作。 –