0

私は apache、php、mysql、code igniter を使用しており、データベースをセットアップしています。データベースには、組み合わせで一意である必要がある 2 つの列があります: 緯度と経度です。

そこで、次の呼び出しを使用してデータベースをセットアップしました。

alter table pano_raw add unique index(lat, lng)

値が同じ場合、2 つの列 (緯度と経度) に値を挿入すると、データベースは書き込みを正しく拒否する必要がありますか?

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 に答える