我正在使用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();
}
答案 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!
}
}
应该这样做(未经测试)。