【问题标题】:MYSQL post not appearingMYSQL 帖子没有出现
【发布时间】:2016-08-02 17:33:26
【问题描述】:

我认为我的代码中没有任何弃用的内容,当我运行 PHP 脚本时,我得到了成功,但数据库中没有出现任何内容。 这是 PHP 代码。

<?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 代码中获得了成功,但数据库表中没有出现任何内容。 有谁知道这个问题?谢谢!

【问题讨论】:

标签: php android mysql database amazon-web-services


【解决方案1】:

您没有执行查询。

所以使用:

mysqli_query($connect, $sql); 并检查其上的错误。

参考文献:

由于给出了另一个答案,并且我首先在 cmets 中指出了这一点,所以我们正直地记录下来。

您也可以接受 sql 注入。使用准备好的语句:

【讨论】:

  • 我仍然成功但没有进入数据库,它也给了我一个 HTTP 错误,无法解析主机名,没有与主机名关联的地址
  • @adobayua 您在其他地方遇到了问题,并且与服务器相关。您需要找出原因并确保所有内容都已签出、凭据等。
  • 我修复了主机名问题。但它仍然没有发布 这是新的 php $username = $_POST['username']; $password = $_POST['密码']; $givenname = $_POST['givenname']; $email = $_POST['email']; $phonenumber = $_POST['phonenumber']; $sql = "INSERT INTO test(username,password,givenname,email,phonenumber) VALUES ('$username', '$password', '$givenname', '$email', '$phonenumber')"; mysqli_query($connect, $sql); if (mysqli_query($connect,$sql)) { echo "值已成功插入"; } 其他 { 回声“失败”; } mysqli_close($connect); ?>
  • @adobayua 检查查询中的错误并确保您已成功连接到正确的数据库并使用正确的表。如果是 Android 问题,我将无法为您提供帮助。另外,请确保您确实是从主机访问它;如果是本地的,那么语法是 http://localhost/file.xxx 而不是 file:///file.xxx 如果你正在这样做。还可以使用错误报告来查看是否有问题php.net/manual/en/function.error-reporting.php 并设置为捕获并显示所有错误。
  • @adobayua 根据您编辑的评论:else { echo "failure"; } 在这里对您没有帮助。使用echo "Error: " . mysqli_error($connect); 来查看真正的(可能的)错误。
【解决方案2】:

您不会在代码中执行查询。另外我强烈建议清理用户输入。

这要求进行 SQL 注入。咨询:How can I prevent SQL injection in PHP?

运行查询:

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

【讨论】:

  • 我编辑了你的答案。使用引用时更好;-)
  • 不客气。我也赞成它来鼓励你:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多