快速检查或添加到DB

时间:2011-03-28 07:55:59

标签: php mysql codeigniter codeigniter-2

我正在使用apache,php,mysql和代码点火器,我有一个数据库设置。在数据库中,我有两列在组合中都需要是唯一的:纬度和经度。

所以我使用这个调用来设置数据库:

alter table pano_raw add unique index(lat, lng)

现在当我将值插入两列(lat和lng)时,如果值相同,数据库应该拒绝写正确吗?

function addNewSet($data)
{
    $this->db->insert('sets', $data);
}

此函数应返回true或false,具体取决于读取或写入是否成功?

那么现在我怎么改变它以便当它返回插入记录的row_id或返回FALSE时?如果写入工作,我需要row_id,如果不是,我需要FALSE,所以我可以改变调用此函数的代码。

这会有用吗?我不这么认为。想法?

function addNewSet($data)
{
    $this->db->insert('sets', $data);
    return $this->db->insert_id();
}

3 个答案:

答案 0 :(得分:1)

默认情况下,它不会返回false,在返回false之前会出现数据库错误。

如果你真的想要这个,你需要转到application/config/database.php并将其设置为false $db['default']['db_debug'] = FALSE;

然后你应该能够做到这一点(假设你的表的id字段设置为自动递增)

 function addNewSet($data) {
     if ($this->db->insert('sets', $data)) {
          return $this->db->insert_id(); 
     } else {
          return FALSE;
     }
 }

答案 1 :(得分:0)

试试这个:

function addNewSet($data)
{
    $result = $this->db->insert('sets', $data);
    if ( $result )
        return $this->db->insert_id();
    return false;
}

答案 2 :(得分:0)

插入数据后,您可以使用$this->db->affected_rows();来检查是否添加了任何记录(或受影响)。

所以

function addNewSet($data)
{
    $this->db->insert('sets', $data);

    if($this->db->affected_rows()==1)
    {
        return $this->db->insert_id();
    }
    else
    {
        return false; // nothing was added!
    }
}

应该这样做(未经测试)。