【问题标题】:Insert data into mysql db with php script doesnt work使用php脚本将数据插入mysql db不起作用
【发布时间】:2019-03-21 10:44:30
【问题描述】:

各位开发者,

我正在尝试使用 php 脚本将数据从我的 Android 应用程序插入到我的 MySql 服务器(在 wamp 上运行)。

这些是我的 php 脚本:

<?php

define('hostname','localhost');
define('user','root');
define('password','');
define('databaseName','tutorial');

$connect = mysqli_connect(hostname,user,password,databaseName);

?>

<?php

if($_SERVER["REQUEST_METHOD"]=="POST") {

    require 'connection.php';
    createStudent();

}

function createstudent(){

    global $connect;

    $firstname = $_POST["firstname"];
    $lastname = $_POST["lastname"];
    $age = $_POST["age"];

    $query = "insert into student(firstname,lastname,age) values ('$firstname','$lastname','$age');";

    mysqli_query($connect,$query) or die (mysqli_error($connect));
    mysqli_close($connect);

}

?>

这是我的安卓代码:

requestQueue = Volley.newRequestQueue(getApplicationContext());

                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("firstname",et_firstname.getText().toString());
                        parameters.put("lastname",et_lastname.getText().toString());
                        parameters.put("age",et_age.getText().toString());

                        return parameters;

                    }
                };

                requestQueue.add(request);

让我说:我知道这是一个很复杂的问题,但我几乎已经结束了我的想法,几周以来一直在寻找解决方案,如果有人可以帮助我,我会很高兴,因为我不是非常喜欢 php 我不能帮助自己太多。

谢谢 你好 亚历克斯

编辑

当我在 Postman 上运行脚本填充数据时,会出现这些错误:

Postman error

【问题讨论】:

    标签: php android android-volley


    【解决方案1】:

    解决方案

    我终于知道问题出在哪里了,如果其他人也有这个问题:

    我正在运行我前一段时间安装的另一个 MySql 服务器,但忘记了它。所以这个在我的默认端口上运行。我卸载了这台服务器并将我的“真实”服务器的端口更改为默认端口。

    非常感谢所有试图帮助我的人,他们帮助我找到了解决方案。

    【讨论】:

      【解决方案2】:

      首先通过在某个在线网站上运行它来检查您的 api,然后通过简单地通过在 web 上运行的 php 脚本插入一些数据来检查您的数据库名称是否正确,如果问题没有解决,则可能是您的数据库连接有问题。

      【讨论】:

      • 是的,我认为这是数据库连接的问题。我更改了运行mySql的端口,可能和这个有关?
      • 可能是这种情况,还要检查您的互联网连接可能是您的防火墙阻止了连接,如果没有,请检查 IP 地址。
      • 检查IP地址是什么意思?我试过在停用 avira 的情况下这样做,不要改变任何事情
      • 通过 ip 地址我的意思是说你的 android 应用程序和 php 脚本都使用相同的互联网连接,如 192.168.10.xx
      • 我只是使用本地主机
      【解决方案3】:

      您可以使用浏览器访问 PhpMyAdmin 吗?错误指出无法使用您的 PHP 应用程序访问数据库。

      如果不能,请确保它已正确安装并且正在运行。

      如果可以,请确保已安装 mysqli 驱动程序。请参阅this question 以查看您是否安装并配置了 mysqli 驱动程序。

      【讨论】:

      • 是的,我可以在浏览器中访问 PhpMyAdmin。还有函数:var_dump(function_exists('mysqli_connect'));打印真实
      • 您的 PHPmyAdmin 的 URL 是什么?是像http://localhost/phpmyadmin 还是你使用像http://localhost:8080/phpmyadmin?如果是这样,请使用您正在使用的端口号,例如:` $port = 8080; $connect = mysqli_connect(hostname.':'.$port,user,password,databaseName);`
      【解决方案4】:

      原因是连接。

      正确的语法是

      $con = mysqli_connect("localhost","my_user","my_password","my_db");
      

      所以,一定是

      $connect = mysqli_connect(hostname,user,password,databaseName);
      

      去掉空括号

      【讨论】:

      • 哦,是的,这是一个提示错误,仍然无法正常工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多