-1
mysqli 결과를 무료로 만들려고합니다. 변수가 정의 된 다음 정의되지 않았습니다. 어떻게되는지는 모르지만 너무 이상합니다.정의되지 않은 정의 된 결과 mysql_free_result
public function __destruct() {
if(isset($this->result) && is_a($this->result, "mysqli_result")) {
var_dump($this->result);
mysqli_free_result($this->$result);
}
mysqli_close($this->conexion);
}
는 isset 만약
와는 조건에 입력하는 mysqli_result 유형, 그것은 입력 내가이 얻을 :
Notice: Undefined variable: result in C:\xampp\htdocs\Proyectos\Tell Yourself\app\model\Database.class.php on line 22
이 전체 클래스 :
abstract class Database {
protected $conexion;
protected $result;
public function __construct() {
if(!isset($this->conexion)) {
if($this->conexion = mysqli_connect("localhost", "root", "", "tellYourself")) {
return true;
}
else {
echo "No se ha podido realizar conexion con la base de datos: ".mysqli_connect_error();
return false;
}
}
}
public function __destruct() {
if(isset($this->result) && is_a($this->result, "mysqli_result")) {
var_dump($this->result);
mysqli_free_result($this->$result);
}
mysqli_close($this->conexion);
}
protected function query($query) {
if($this->result = mysqli_query($this->conexion, $query)) {
/*if(is_a($this->result, "mysqli_result")) {
$this->result = mysqli_fetch_object($this->result);
}*/
return $this->result;
}
else {
return false;
}
}
}
그리고 이것이 아이 :
require_once("app/model/Database.class.php");
class User extends Database {
public function __construct() {
parent::__construct();
}
public function __destruct() {
parent::__destruct();
}
public function login($email, $password) {
$email = mysqli_real_escape_string($this->conexion, $email);
$password = md5($password);
$loginQuery = "SELECT id, username FROM users WHERE email='$email' and password='$password';";
if($result = $this->query($loginQuery)) {
$result = mysqli_fetch_object($result);
$_SESSION["username"] = $result->username;
return true;
}
else {
return false;
}
}
public function register($username, $email, $password) {
$username = mysqli_real_escape_string($this->conexion, $username);
$email = mysqli_real_escape_string($this->conexion, $email);
$password = md5($password);
$activationCode = md5($username.rand(0, 100));
$registerQuery = "INSERT INTO users(username, email, password) VALUES('$username', '$email', '$password');";
if($this->query($registerQuery)) {
$activationCodeQuery = "INSERT INTO user_emailconfirm(userId, activeCode) VALUES(".mysqli_insert_id($this->conexion).", '$activationCode');";
if($this->query($activationCodeQuery)) {
return array("userID" => mysqli_insert_id($this->conexion), "activationCode" => $activationCode);
}
}
else {
return false;
}
}
public function activateUser($activationCode, $userID) {
$activateUserQuery = "SELECT userId, activeCode FROM user_emailconfirm WHERE userId='$userID' and activeCode='$activationCode';";
if($result = $this->query($activateUserQuery)) {
var_dump($result);
if(mysqli_num_rows($result) == 1) {
$activateUserQuery = "UPDATE user_emailconfirm SET confirmed=1 WHERE userId='$userID' and activeCode='$activationCode';";
if($this->query($activateUserQuery)) {
return true;
}
}
}
else {
return false;
}
}
}
코드의 최종성은 데이터가있을 때 결과를 비우는 것입니다.
** 와우 **, 즉 내가 그것에 대해 몰랐습니다, 감사합니다 도움이 될 수 – Tapasa