La fonction codeigniter suivante prend un paramètre (chaîne) et renvoie l'ID (entier) de la ligne. Cela fonctionne bien si je transmets des valeurs de chaîne, mais si l'entier 0 est passé, il renvoie l'ID de la première ligne dans la base de données. En principe, il doit retourner le user_id
seulement si le user_name
existe dans la base de données. Comme il n'y a pas de nom d'utilisateur appelé 0, il devrait retourner false. Quelqu'un peut-il dire pourquoi il se comporte ainsi et comment il peut être réparé?Question à propos de la fonction PHP return
Merci.
public function get_user_id($user_name)
{
$this -> db -> select('user_id');
$this -> db -> from('users');
$this -> db -> where('user_name', $user_name);
$this -> db -> limit(1);
$query = $this->db->get();
if ($query->num_rows > 0)
{
$row = $query->row();
return $row->user_id;
}
return false;
}
Par exemple:
$user_name = "test"; //works fine, returns id.
$user_name = "0"; //works fine, doesnt return anything
$user_name = 0; //Problem. returns ID of first row.
Le problème est sur l'instruction sql générée, vous devez le passer en tant que chaîne à la WHERE() – Gerep