Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 插入脚本返回成功,但未将任何内容插入数据库_Android_Mysql_Pdo_Sql Insert_Keyvaluepair - Fatal编程技术网

Android 插入脚本返回成功,但未将任何内容插入数据库

Android 插入脚本返回成功,但未将任何内容插入数据库,android,mysql,pdo,sql-insert,keyvaluepair,Android,Mysql,Pdo,Sql Insert,Keyvaluepair,我有一个将值插入外部数据库的方法。我有一个团队成员名称数组,它与团队成员的团队ID(team_members表中的外键)一起循环发送到数据库 下面是我的简单数据库设计: CREATE TABLE team ( team_id int(11) NOT NULL AUTO_INCREMENT, unique_id varchar(23) NOT NULL, teamName varchar(50) NOT NULL, PRIMARY KEY (team_id) ); CREATE TABLE

我有一个将值插入外部数据库的方法。我有一个团队成员名称数组,它与团队成员的团队ID(team_members表中的外键)一起循环发送到数据库

下面是我的简单数据库设计:

CREATE TABLE team (
team_id int(11) NOT NULL AUTO_INCREMENT,
unique_id varchar(23) NOT NULL,
teamName varchar(50) NOT NULL,
 PRIMARY KEY (team_id)
 );


CREATE TABLE team_member (
team_member_id int(11) NOT NULL AUTO_INCREMENT,
unique_id varchar(23) NOT NULL,
fullName varchar(50) NOT NULL,
team_id int (11) NOT NULL,
 PRIMARY KEY (team_member_id),
 FOREIGN KEY (`team_id`)
REFERENCES `scratchcard`.`team` (`team_id`)
);
以下是我实现这一目标的方法:

private void addTeamMember(final List teamMemberArray,final String team_id) {

    //helps with debugging regarding post requests
    Gson gson = new GsonBuilder()
            .setLenient()
            .create();


    //Retrofit is a REST Client for Android and Java by Square.
    //It makes it relatively easy to retrieve and upload JSON (or other structured data) via a REST based webservice
    Retrofit retrofit = new Retrofit.Builder()
            //directing to the localhost which is defined in the Constants Class as BASE_URL
            .baseUrl(Constants.BASE_URL)
            //Add converter factory for serialization and deserialization of objects.
            //Gson passed as a parameter to help with debug
            .addConverterFactory(GsonConverterFactory.create(gson))
            //Create the Retrofit instance using the configured values.
            .build();


    //The Retrofit class generates an implementation of the RequestInterface interface.
    RequestInterface requestInterface = retrofit.create(RequestInterface.class);




    for (Object x : teamMemberArray) {



        //create new Team object
        TeamMember teamMember = new TeamMember();


        //setter
        teamMember.setFullName(String.valueOf(x));
        teamMember.setTeam_id(team_id);

        Toast.makeText(getActivity(), teamMember.getFullName(),
                Toast.LENGTH_LONG).show();


        //create new server object
        final ServerRequest request = new ServerRequest();


        //make a request to set the operation to Team_Member
        request.setOperation(Constants.Team_Member);
        //set values entered for the new teamMember to be sent to the server
        request.setTeamMember(teamMember);


        Call<ServerResponse> response = requestInterface.operation(request);


        /**
         * Enqueue is used to Asynchronously send the request and notify callback of its response or if an error occurred
         * talking to the server, creating the request, or processing the response.
         */


        response.enqueue(new Callback<ServerResponse>() {

            @Override
            public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

                ServerResponse resp = response.body();


            /*Snackbars provide lightweight feedback about an operation. They show a brief message at the
            bottom of the screen on mobile and lower left on larger devices. Snackbars appear above all other
            elements on screen and only one can be displayed at a time.
             */


                Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();


                if (resp.getResult().equals(Constants.SUCCESS)) {
                    SharedPreferences.Editor editor = pref.edit();


                    Log.d("TEST VALUE", "getTeamMemberName() = " + response.body().getTeamMember().getFullName() );
                    Log.d("TEST VALUE", "getTeamMemberUniqueID() = " + response.body().getTeamMember().getUnique_id());
                    Log.d("TEST VALUE", "getTeamMemberTeamID() = " + response.body().getTeamMember().getTeamID());

                          editor.putString(Constants.FULL_NAME, resp.getTeamMember().getFullName());
                          editor.putString(Constants.UNIQUE_ID, resp.getTeamMember().getUnique_id());
                          editor.putString(Constants.TEAM_ID, resp.getTeamMember().getTeamID());
                          editor.apply();
                          goToQuestions();

                }

                progress.setVisibility(View.INVISIBLE);

            }

            @Override
            public void onFailure(Call<ServerResponse> call, Throwable t) {

                progress.setVisibility(View.INVISIBLE);
                Log.d(Constants.TAG, "failed" + t);
                Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();


            }
        });
    }

}
我使用response.body进行的日志输出确认这些值正在很好地到达我的插入脚本

08-11 11:07:49.750 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberName() = 1
08-11 11:07:49.750 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberUniqueID() = 598d90061b7de5.56364485
08-11 11:07:49.750 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberTeamID() = 598d8ffd0b9969.94188022
08-11 11:07:49.754 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberName() = 2
08-11 11:07:49.754 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberUniqueID() = 598d90061d4347.93277262
08-11 11:07:49.754 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberTeamID() = 598d8ffd0b9969.94188022
08-11 11:07:49.759 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberName() = 3
08-11 11:07:49.759 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberUniqueID() = 598d90061d8bb2.78397401
08-11 11:07:49.759 3884-3884/com.test.practise D/TEST VALUE: getTeamMemberTeamID() = 598d8ffd0b9969.94188022
我的回调通过我的日志输出确认成功插入数据(我使用的是MYSQL),但数据实际上并没有插入到我的数据库中


我相信我的insert脚本一定有问题,但我不确定解决方案是什么。我曾尝试使用邮递员来帮助我,但这并没有告诉我为什么我被告知成功,但实际上没有得到要插入的数据。

您的插入查询是错误的。应该是这样的

$sql = 'INSERT INTO team_member (`unique_id`, `fullName`, `team_id`)  VALUES (:unique_id, :fullName, :team_id)';
删除下面的行。它用于“选择”获取记录。您可以运行insert查询

$data = $query -> fetchObject();
在同一位置添加下一行并获取最后一个插入id

$insert_id = $this ->conn->lastInsertId();//find last inserted id.

if($insert_id > 0){
     $teamMember["fullName"] = $fullName;
     $teamMember["unique_id"] = $unique_id;
     $teamMember["team_id"] = $team_id;

     return $teamMember;

 }

谢谢您的回答,但我在Postman-Undefined属性中发现以下错误:PDOStatement::$insert_idoh ok。你能应用$insert_id=$this->conn->lastInsertId()吗;而不是$insert\u id=$query->insert\u id;我现在得到未定义的属性:PDOStatement::$num_rowsplease现在检查最新的oneNo错误,但我回到了第一步,Postman说成功了,但使用该应用程序的数据库中没有显示任何内容。
$insert_id = $this ->conn->lastInsertId();//find last inserted id.

if($insert_id > 0){
     $teamMember["fullName"] = $fullName;
     $teamMember["unique_id"] = $unique_id;
     $teamMember["team_id"] = $team_id;

     return $teamMember;

 }