如何在数据库php中返回所选id的值

时间:2014-05-28 10:06:21

标签: php sql codeigniter

我在数据库中插入了一个csv文件。我将如何返回id并使用它插入另一个表中。它总是显示数组到字符串转换错误。 "返回"

有什么问题

这是我的控制器

public function uploadThree(){
    $file = $_FILES['file']['tmp_name'];
    $handle = fopen($file,"r");
    while(($fileop = fgetcsv($handle,1000,",")) !==false)
    {
        $appname = $fileop[0];
        $servname = $fileop[1];
        $ciname = $fileop[2];
        $servid = $this->some_model->insertBulkServ($servname); //i tried to get the value here then insert below
        $appid = $this->some_model->insertBulkSingleApp($appname);//i tried to get the value here then insert below
        $this->some_model->insertBulkCI($ciname);
        $this->some_model->ASMAP($appid,$servid);
    }

    if($success == TRUE)
        redirect(base_url().'some_controller/uploadPage');
}

MODEL

public function insertBulkServ($service) {
/* Inserts csv file for a service */
    $service = $this->db->escape_str($service);

    $queryStr = "Select service from appwarehouse.service where service = '$service' and VISIBILITY = 'VISIBLE'";
    $query = $this->db->query($queryStr);
    if($query->num_rows()>0){

        $queryStr = "SELECT id FROM appwarehouse.service WHERE service='$service' AND visibility = 'VISIBLE';";
        $query = $this->db->query($queryStr);
        $row = $query->result();
        return $row;
        //in here how do i get the ID how do i return it
    }else{
        $queryStr = "INSERT INTO appwarehouse.service(service) VALUES ('$service');";
        $query = $this->db->query($queryStr);

        $queryStr = "SELECT id FROM appwarehouse.service WHERE service='$service' AND visibility = 'VISIBLE';";
        $query = $this->db->query($queryStr);
        $row = $query->result();
        return $row;
    } 
}



public function insertBulkSingleApp($app_name) {
    /* Inserts csv file for an application       */
    $app_name = $this->db->escape_str($app_name);

    $queryStr = "Select * from appwarehouse.application_table where app_name = '$app_name' and VISIBILITY = 'VISIBLE'";
    $query = $this->db->query($queryStr);
    if($query->num_rows()>0){
        $queryStr = "SELECT id FROM appwarehouse.application_table WHERE app_name='$app_name' AND visibility = 'VISIBLE';";
        $query = $this->db->query($queryStr);
        $row = $query->result();
        return $row;
    }
    else{
        $queryStr = "INSERT INTO appwarehouse.application_table(app_name) 
                    VALUES ('$app_name');";
        $query = $this->db->query($queryStr);
        $queryStr = "SELECT id FROM appwarehouse.application_table WHERE app_name='$app_name' AND visibility = 'VISIBLE';";
        $query = $this->db->query($queryStr);
        $row = $query->result();
        return $row;
    } 
}



public function ASMAP($appid,$servid) {

    $appid = $this->db->escape_str($appid);
    $servid = $this->db->escape_str($servid);

    $queryStr = "Select * from appwarehouse.app_service where app_id = '$appid' AND serv_id = '$servid' and VISIBILITY = 'VISIBLE'";
    $query = $this->db->query($queryStr);
    if($query->num_rows()>0){
        return true;
    }
    else{
        $queryStr = "INSERT INTO appwarehouse.app_service(app_id,serv_id) 
                    VALUES ('$appid','$servid');";
        $query = $this->db->query($queryStr);
        return true; 
    } 
}

2 个答案:

答案 0 :(得分:0)

你可能想要的是:

$这 - > DB-> INSERT_ID()

执行数据库插入时的插入ID号。

更多信息:http://ellislab.com/codeigniter/user-guide/database/helpers.html

答案 1 :(得分:0)

你需要这样做很简单 查询后插入

$queryStr = "INSERT INTO appwarehouse.service(service) VALUES ('$service');";

而不是选择使用此

return $this->db->insert_id();

或者如果你真的需要返回对象

$queryStr = "SELECT id FROM appwarehouse.application_table WHERE app_name='$app_name' AND visibility = 'VISIBLE';";
$query = $this->db->query($queryStr);

返回id而不是object

return $query->row()->id;

还有一点需要注意。 insert_id是最后插入的id,因此您不必运行select query来获取id。

还可以使用row()选择单个记录。 result()选择多条记录,这样您就可以得到一个数组。见here