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');
}
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);
}
}
}
?>
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
$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.
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
}
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);
}
}
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);