it-swarm.com.de

So prüfen Sie, ob die ID bereits vorhanden ist - Codeigner

ich versuche zu überprüfen, ob eine ID in der Datenbank bereits vorhanden ist und wenn es dann nicht nur diese ID und nicht die anderen, die vorhanden sind, einfügt

Ich habe versucht, eine where-Anweisung durchzuführen, die prüft, ob eine ID in der Datenbank vorhanden ist, aber selbst wenn es sich um neue Informationen handelt, wird diese nicht in die Datenbank eingefügt

Ich bin hier ziemlich verloren. Jede Anleitung wäre willkommen

pS: Ich möchte keine Zeile aktualisieren. Ich möchte eine neue aktualisierte Zeile einfügen, die nicht vorhanden ist

$this->db->where('id',$id);
$q = $this->db->get('testing');

if($q)
{
    //Do nothing
}
else
{

    $this->db->set('id', $id);
    $this->db->set('message', $message);
    $query= $this->db->insert('testing');

}
7
Hashey100

Modell

<?php
class Fruits_model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    function check()
    {
        $query = null; //emptying in case 

        $id   = $_POST['id']; //getting from post value
        $name = $_POST['name'];

        $query = $this->db->get_where('fruits', array(//making selection
            'id' => $id
        ));

        $count = $query->num_rows(); //counting result from query

        if ($count === 0) {
            $data = array(
                'name' => $name,
                'id' => $id
            );
            $this->db->insert('fruits', $data);
        }
    }
}

?>
11
Wayne Tun

Sie haben ein logisches Problem mit Ihrem Code, das Sie beheben müssen.

In Ihrem Code speichern Sie das Ergebnis Ihrer Abfrage als $q = $this->db->get('testing'), und $q wird unabhängig von der Anzahl der Zeilen, die Sie zurückgeben, immer als true ausgewertet.

Sie müssen die Anzahl der Zeilen mit $query->num_rows() > 0 überprüfen, und der Rest Ihres Codes verhält sich dann wie erwartet.

Weitere Informationen finden Sie unter: http://ellislab.com/codeigniter/user-guide/database/results.html

3
Marc Audet
$ql = $this->db->select('id')->from('testing')->where('id',$id)->get();

if( $ql->num_rows() > 0 ) {} else {
    $a = array('id' => $id, 'message' => $message);
    $this->db->insert('testing', $a);
}

Das sollte es tun.

3
Jonas m

Sie müssen die IDs in Ihrer MYSQL-Tabelle mit der ID auswählen, die Sie überprüfen möchten, und dann die Zeilen zählen. Wenn die Zeilenanzahl 0 ist, ist die ID nicht vorhanden.

     $query = mysql_query("SELECT * FROM     your_table WHERE id='$id'");
     $count = mysql_num_rows($query);
     If($count!=0){
     // id exists
     } else {
     // id doesn't exist
     }
1
Xandervr

normalerweise wird das Feld 'id' mit auto_increment und set primary gesetzt, was eindeutig und nicht wiederholbar ist. Es gibt also kein Problem, sich um das Vorhandensein zu sorgen.

Ich denke jedoch, dass Sie es in Ihrem Fall nicht als "eindeutiges Feld" verwenden.

Lassen Sie mich Ihnen ein Beispiel geben.

Hier habe ich einen Tischnamen 'Früchte'

++++++++++++++++++++++++++++++++++++
ငfruit_id  | int (primary)
name      | text 
id        |  int
++++++++++++++++++++++++++++++++++++++

in Ihrem Modell

function checkId($id)
{
   $query=$this->db->get_where('fruits',array('id'=>$id)); //check if 'id' field is existed or not

   if($query!=null)  // id found stop
   {
     return FALSE; 
   }
   else // id not found continue..
   {
       $data = array(
             'fruit_id' => $fruit_id ,
              'name' => $name ,
             'id' => $id
        );    
      $this->db->insert('fruits', $data);          
   }    
}
1
Wayne Tun

Zum Überprüfen einer ID oder eines Spaltenwerts, der nicht in der Datenbank CI vorhanden ist, gibt es eine Validierungsregel.

Sehen Sie es live hier: Validation Rule

Regel: is_unique

Gibt FALSE zurück, wenn das Formularelement für den Tabellen- und Feldnamen im Parameter nicht eindeutig ist. Hinweis: Für diese Regel muss der Abfrage-Generator aktiviert sein, damit er funktioniert.

Beispiel: is_unique[table.field]

$this->form_validation->set_rules(
        'username', 'Username',
        'required|min_length[5]|max_length[12]|is_unique[users.username]',
        array(
                'required'      => 'You have not provided %s.',
                'is_unique'     => 'This %s already exists.'
        )
);

Für die erweiterte Verwendung der Validierung können Sie alle Validierungseinstellungsregeln mithilfe eines Arrays hinzufügen.

        $this->form_validation->set_rules(
            'username', 'Username',
            'required|min_length[5]|max_length[12]|is_unique[users.username]',
            array(
                    'required'      => 'You have not provided %s.',
                    'is_unique'     => 'This %s already exists.'
            )
    );


    $config = array(
        'your_rule_name' => array(
                array(
                        'username', 'Username',
                        'required|min_length[5]|max_length[12]|is_unique[users.username]',
                        array(
                                'required'      => 'You have not provided %s.',
                                'is_unique'     => 'This %s already exists.'
                        )
                )
        ),        
        array(
                'field' => 'email',
                'label' => 'Email',
                'rules' => 'required'
        )
);

$this->form_validation->set_rules($config);
0
ankit suthar

Du solltest es so versuchen:

public function record_exists(){
   $exists = $this->db->get_where('table_name', array('id' => $id));
   if($exists->num_rows() > 0 ){
       echo "Some message";
       return false;
   }else{
      // Insert your data into the database...
   }
}
0
Saddam Khan