web-dev-qa-db-fra.com

Comment vérifier si un identifiant existe déjà - codeigniter

j'essaie de vérifier si un identifiant existe déjà dans la base de données et si ce n'est pas le cas, insérez uniquement cet identifiant et non les autres existants.

J'ai essayé de faire une déclaration where qui vérifie si leur identifiant existe dans la base de données mais même si ce sont de nouvelles informations, cela ne l'insère pas dans la base de données

Je suis tout à fait perdu ici toute orientation serait appréciée

ps je ne veux pas mettre à jour une ligne je veux insérer une nouvelle mise à jour qui n'existe pas

$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

Modèle

<?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

Vous avez un problème de logique avec votre code que vous devez corriger.

Dans votre code, vous enregistrez le résultat de votre requête sous le nom $q = $this->db->get('testing'). $q sera toujours considéré comme étant true, quel que soit le nombre de lignes renvoyées.

Vous devez vérifier le nombre de lignes à l'aide de $query->num_rows() > 0. Le code restant se comportera comme prévu.

Pour plus de détails, voir: 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);
}

Cela devrait le faire.

3
Jonas m

Vous devez sélectionner l'ID dans votre table MYSQL avec l'ID que vous souhaitez vérifier, puis compter les lignes. Si le nombre de lignes est égal à 0, l'id n'existe pas.

     $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

normalement, le champ 'id' est défini avec auto_increment et set primary qui est unique et non répétable. Il n'y a donc pas de problème à s'inquiéter de l'existant.

Cependant, dans votre cas, je pense que vous ne l'utilisez pas comme un "champ unique".

Laisse moi te donner un exemple.

Ici, j'ai un nom de table 'fruits'

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

dans ton modèle

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

Pour la vérification d'un ID, il existe une règle de validation pour toute valeur de colonne absente de la base de données.

Voir en direct ici: Validation Rule

Règle: is_unique

Renvoie FALSE si l'élément de formulaire n'est pas unique dans la table et le nom du champ dans le paramètre. Remarque: cette règle nécessite que Query Builder soit activé pour fonctionner.

Exemple: 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.'
        )
);

Pour une utilisation plus avancée de la validation, vous pouvez ajouter toutes les règles de définition de validation utilisant un tableau.

        $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