Je reçois un message d'erreur: Propriété non définie: CI_DB_mysqli_result::$num_row
mon contrôleur est
<?php ?> <html> <head> <title>Login Account</title> </head> <body> <div> <form method="post" method="post" name="login" action="<?php echo base_url(''); ?>Login/login"> <h2>Login Form</h2> <div > <label for="username" >Uername: </label> <input style="margin-left:2px" type="text" value="" name="username" placeholder="User Name" id="username" required="" /> </div> </br> <div> <label for="username" >password: </label> <input type="password" value="" name="password" placeholder="Password" id="password" required="" /> </div> </br> <div> <input type="button" id="btnLogin" value="Login"> </div> </form> </div> </body> </html>
et mon modèle est p>
<?php class Login_mod extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); } function validate($username,$password) { // $username = $this->input->post('username'); // $password = $this->input->post('password'); $this->db->where('username', $username); $this->db->where('pass', $password); $query = $this->db->get('user'); if ($query->num_row == 1) { return TRUE; } else { return FALSE; } } }
et mon point de vue est
<?php class Login extends CI_Controller { function __construct() { parent::__construct(); $this->load->database(); $this->load->model('Login_mod'); } function login() { $username = $this->input->post('username'); $password = $this->input->post('password'); $result = $this->Login_mod->validate($username,$password); if (!$result) { $msg = "<font color=red> Invalid Username or Password.</font></br>"; $data['msg'] = $msg; $this->load->view('login/Login', $data); } else { $this->load->view('login/index'); } } }
Une erreur PHP a été rencontrée Gravité: avis
Message: Propriété non définie: CI_DB_mysqli_result :: $ num_row
Nom de fichier: models / Login_mod.php
Numéro de ligne: 27
Backtrace:
Fichier: C: \ xampp \ htdocs \ ov400 \ application \ models \ Login_mod.php Ligne: 27 Fonction: _error_handler
Fichier: C: \ xampp \ htdocs \ ov400 \ application \ controllers \ Login.php Ligne: 23 Fonction: valider
Fichier: C: \ xampp \ htdocs \ ov400 \ index.php Ligne: 315 Fonction: require_once
4 Réponses :
utilisez cette requête:
function validate($username,$password) { return $this->db->where('username', $username)->where('pass', $password)->get('user')->row_array(); }
Juste une erreur de syntaxe. L'instruction correcte pour la clause if
dans le modèle serait
return ($query->num_rows() == 1) ? true : false;
Et, si vous souhaitez compacter ce code en une seule ligne en utilisant un opérateur ternaire , vous pouvez utiliser:
if ($query->num_rows() == 1) { return TRUE; } else { return FALSE; }
ce qui précède produirait le même résultat, avec un code beaucoup plus propre
Ce n'est pas $ query-> num_row ();
c'est $query->num_rows();
Changez votre validate
en ceci:
function validate($username,$password) { $this->db->where('username', $username); $this->db->where('pass', $password); $query = $this->db->get('user'); if ($query->num_rows == 1) { return TRUE; } else { return FALSE; } }
Modifier votre fonction de validation
function validate($username,$password) { $this->db->where(['username'=> $username, 'pass'=> $password]); $query = $this->db->get('user'); $num = $query->num_rows(); if($num){ return true; } else{ return false; } }
c'est
$ query-> num_rows ()
ça ne fonctionne pas
Quelle est la nouvelle erreur
Erreur fatale: appel à la méthode non définie CI_DB_MYSQLI_RESULT :: num_row () dans c: \ xampp \ htdocs \ ov400 \ application \ modèles \ login_mod.php à la ligne 27
Vous n'avez pas tout changé. Ce n'est pas
num_row ()
, c'estnum_rows ()
cela fonctionne mais n'a pas redirigé vers ma page d'index