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