0

我正在使用 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();
}
4

3 回答 3

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;
     }
 }
于 2011-03-28T08:20:01.497 回答
0

试试这个:

function addNewSet($data)
{
    $result = $this->db->insert('sets', $data);
    if ( $result )
        return $this->db->insert_id();
    return false;
}
于 2011-03-28T07:59:58.353 回答
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!
    }
}

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

于 2011-03-28T08:05:11.220 回答