Неустранимая ошибка: Uncaught Ошибка: вызов функции-члена prepare () - PullRequest
0 голосов
/ 28 марта 2019

я уже прочитал эти вопросы и отвечу здесь, но они не являются проблемой для меня. Я пытаюсь найти более чем 19HRS и продолжаю находить какое-либо решение

note

php версия: PHP 7.2.15-0ubuntu2 (cli)

Неустранимая ошибка: необученная ошибка: вызов функции-члена prepare () для строки

Неустранимая ошибка: неучтеннаяОшибка: вызов функции-члена format () для логического значения

Неустранимая ошибка: ошибка Uncaught: вызов функции-члена prepare () для нуля

Uncaught Error: вызов функции-члена prepare ()

вызов функции-члена prepare () при отсутствии значения - после обновления до PHP 7 (дубликат)

вот мой код

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
/**
 * user class for account creation and login purpose
 */
class User {
    private $con;

    function __construct(){
        include_once("../database/db.php");  
        $db = new Database();
        $this->con = $db->connect();
    }

    private function emailExists($email){
        $pre_stmt = $this->con->prepare("SELECT id FROM user WHERE email = ? ");
        $pre_stmt->bind_param("s",$email);
        $pre_stmt->execute() or die($this->con->error);
        $result = $pre_stmt->get_result();
        if($result->num_rows > 0){
            return 1;
        }else{
            return 0;
        }
    }


    public function createUserAccount($username,$email,$password,$usertype){
        //To protect your application from sql attack you can user 
        //prepares statment
        if ($this->emailExists($email)) {
            return "EMAIL_ALREADY_EXISTS";
        }else{
            $pass_hash = password_hash($password,PASSWORD_BCRYPT,["cost"=>8]);
            $date = date("Y-m-d");
            $notes = "";
            $pre_stmt = $this->con->prepare("INSERT INTO user(`username`, `email`, `password`, `usertype`, `register_date`, `last_login`, `notes`)
             VALUES (?,?,?,?,?,?,?)");
            $pre_stmt->bind_param("sssssss",$username,$email,$pass_hash,$usertype,$date,$date,$notes);
            $result = $pre_stmt->execute() or die($this->con->error);
            if ($result) {
                return $this->con->insert_id;
            }else{
                return "SOME_ERROR";
            }
        }

    }

}
$user = new User();
echo $user->createUserAccount("test","test1@mail.com","12345678","Admin");

?>

я пытаюсь вставить данные в свою базу данных здесь, я подтверждаю, что мое соединение с базой данных и таблица все верны

это моя ошибка

Fatal error: Uncaught Error: Call to a member function prepare() on boolean in /var/www/html/inv/includes/user.php:18 Stack trace: #0 /var/www/html/inv/includes/user.php(33): User->emailExists('test1@mail.com') #1 /var/www/html/inv/includes/user.php(54): User->createUserAccount('test', 'test1@mail.com', '12345678', 'Admin') #2 {main} thrown in /var/www/html/inv/includes/user.php on line 18

и это мой db.php

<?php

/**
* 
*/
class Database
{
    private $con;

    public function connect(){
        include_once("constants.php");
        $this->con = new Mysqli(HOST,USER,PASS,DB);
        if ($this->con) {
            return $this->con;
        }
        return "DATABASE_CONNECTION_FAIL";
    }
}

$db = new Database();
$db->connect();

?>

это мой sql

INSERT INTO `user`(`id`, `username`, `email`, `password`, `usertype`, `register_date`, `last_login`, `notes`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...