2016-08-02 48 views
0

我不認爲我在我的代碼中有任何棄用的東西,當我運行PHP腳本時我得到了成功,但沒有出現在數據庫中。這是PHP代碼。MYSQL帖子沒有出現

<?php include "../inc/dbinfo.inc"; ?> 
<?php 

$connect = new mysqli("DB_SERVER","DB_USERNAME","DB_PASSWORD","DB_DATABASE"); 

if(!$connect){ 
die('error'); 
} 
else 
{ 
echo "success"; 
} 

$username = isset($_POST['username']) ? $_POST['username'] : ''; 
$password = isset($_POST['password']) ? $_POST['password'] : ''; 
$givenname = isset($_POST['givenname']) ? $_POST['givenname'] : ''; 
$email = isset($_POST['email']) ? $_POST['email'] : ''; 
$phonenumber = isset($_POST['phonenumber']) ? $_POST['phonenumber'] : ''; 


$sql = "INSERT INTO test(username,password,givenname,email,phonenumber) VALUES ('$username', '$password', '$givenname', '$email', '$phonenumber')"; 

mysqli_close($connect); 
?> 

繼承人的Android代碼。

private void insertToDatabase(){ 
    class SendPostReqAsyncTask extends AsyncTask<String, Void,String > 
     @Override 
     protected String doInBackground(String... params) { 
      String paramUsername = params[0]; 
      String paramPassword = params[1]; 
      String paramGivenname = params[2]; 
      String paramEmail = params[3]; 
      String paramPhonenumber = params[4]; 




      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
      nameValuePairs.add(new BasicNameValuePair("username", username.getText().toString())); 
      nameValuePairs.add(new BasicNameValuePair("password", password.getText().toString())); 
      nameValuePairs.add(new BasicNameValuePair("givenname", givenName.getText().toString())); 
      nameValuePairs.add(new BasicNameValuePair("email", email.getText().toString())); 
      nameValuePairs.add(new BasicNameValuePair("phonenumber", phone.getText().toString())); 


      try { 
       HttpClient httpClient = new DefaultHttpClient(); 
       HttpPost httpPost = new HttpPost(Constantss.DB_DNS); 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       HttpResponse response = httpClient.execute(httpPost); 
       HttpEntity entity = response.getEntity(); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return "success"; 
     } 



     @Override 
     protected void onPostExecute(String result){ 
      super.onPostExecute(result); 
      Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show(); 
     } 

    } 


    SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask(); 
    // sendPostReqAsyncTask.execute(uname,pword, gname, lmail,pnumb); 
} 

我從Android代碼獲得成功,但沒有出現在數據庫表中。 有誰知道這個問題?謝謝!

+4

你永遠不執行查詢 –

+0

我如何執行查詢?謝謝。 –

+1

'mysqli_query($ connect,$ sql);'並檢查它的錯誤。 http://php.net/manual/en/mysqli.error.php –

回答

7

你沒有執行查詢。

所以使用:

mysqli_query($connect, $sql);並檢查錯誤就可以了也。

參考文獻:

由於另一個答案被賦予我已經指出了這一點在評論第一,只是所以我們正視聽。

你也開放給sql注入。使用準備好的語句:

+0

我仍然有成功,但沒有進入數據庫,它也給了我一個HTTP錯誤,無法解析主機名,沒有地址與主機名 –

+0

@adobayua你在別處有問題,然後並與服務器相關。您需要找出原因並確保所有內容都已檢出,憑據等。 –

+0

I修復了主機名問題。但它仍然不會發布這是新的php $ username = $ _POST ['username']; $ password = $ _POST ['password']; $ givenname = $ _POST ['givenname']; $ email = $ _POST ['email']; $ phonenumber = $ _POST ['phonenumber']; ('$ username','$ password','$ givenname','$ email','$ phonenumber')「; mysqli_query($ connect,$ sql); if(mysqli_query($ connect,$ sql)) { echo「值已插入成功」; } else { echo「failure」; } mysqli_close($ connect); ?> –

1

您不在代碼中執行查詢。此外,我強烈建議消毒用戶輸入。

這需要SQL注入。請教:How can I prevent SQL injection in PHP?

運行查詢:

$res = mysqli_query($connect, $sql); 
+0

我編輯了你的答案。使用引用時更好;-) –

+1

謝謝! – sietse85

+0

不客氣。我也upvoted它,以鼓勵你:-) –