Проверить или добавить в БД быстро - PullRequest
0 голосов
/ 28 марта 2011

Я использую 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 ]

1 голос
/ 28 марта 2011

По умолчанию он не вернет false, будет ошибка базы данных перед возвратом false.

Если вы действительно этого хотите, вам нужно перейти на application/config/database.php и изменить значение на false $db['default']['db_debug'] = FALSE;

Тогда вы сможете это сделать (при условии, что в вашей таблице для поля идентификатора установлено автоматическое увеличение)

 function addNewSet($data) {
     if ($this->db->insert('sets', $data)) {
          return $this->db->insert_id(); 
     } else {
          return FALSE;
     }
 }
0 голосов
/ 28 марта 2011

Вы можете использовать $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!
    }
}

Должно это сделать (не проверено).

0 голосов
/ 28 марта 2011

Попробуйте это:

function addNewSet($data)
{
    $result = $this->db->insert('sets', $data);
    if ( $result )
        return $this->db->insert_id();
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...