Фатальная ошибка: Исчерпан разрешенный объем памяти 536870912 байт (попытался выделить 262144 байта)

Я пытаюсь сохранить 3 значения данных в базе данных mysql, используя PHP PDO, это всего лишь 3 строки: имя, имя пользователя, пароль. и получил эту фатальную ошибку.

Неустранимая ошибка: разрешенный размер памяти 536870912 байт исчерпан (попытка выделить 262144 байта) в D:\xampp\htdocs\fiverr\order-management-system\classes\contr\UserContr.class.php в строке 13

Мой текущий лимит данных php.ini = ; Максимальный объем памяти, который может потреблять скрипт (128 МБ) ; http://php.net/memory-limit memory_limit=512M

    // User Modal-------------------------------
    <?php

    require_once "Dbcon.php";

    class User extends Dbcon{

    //check table is empty 

    protected function if_tableEmpty(){

    $sql = "SELECT * FROM user_login";

    $stmt = $this->connect()->query($sql);

    $result = $stmt->rowCount();
    
    if ($result > 0){
        return false;
    }else{
        return true;
    }
}

//check username is already exist

protected function username_exists($username){

    if ($this->if_tableEmpty() != true){

        $this->username = $username;

    
        $sql = "SELECT username FROM user_login WHERE username = ?";

        $stmt = $this->connect()->prepare($sql);

        $stmt->execute([$this->username]);

        $result = $stmt->rowCount();

        return $result;
    }else{
        return 0;
    }
    
    
        
}

// User Insert
protected function setUser($name, $username, $password, $type, $status){

    $this->name = $name;

    $this->username = $username;

    $this->password = $password;

    $this->type = $type;

    $this->status = $status;

    $sql = "INSERT INTO user_login(name, username, password, type, status) VALUES(?,?,?,?,?)";

    $stmt = $this->connect()->prepare($sql);

    $insert = $stmt->execute([$this->name, $this->username, $this->password, $this->type, $this->status]);

    if ($insert == true){

        return true;

    }else{

        return false;
    }

}
}
    // User Controller-------------------------------
    require_once "./classes/modal/User.class.php";

    class UserContr extends User{

    // check username exists

    public function username_exists($username){

    $this->username = $username;

    $result = $this->username_exists($this->username);

    if ($result > 0){

        return true;

    }else{

        return false;

    }

}

// create marketer

public function create_marketer($name, $username, $password){

    if ($this->username_exists($username) == false){

        $password = password_hash($password, PASSWORD_DEFAULT);

        $type = 'marketer';

        $status = 'active';
        
        $result = $this->setUser($name, $username, $password, $type, $status);

        if ($result == true){

            return true;

        }else{

            return false;

        }
    }else{

        return 1;

    }

}
}
    //Posting php file in includes folder

   <?php

    if (isset($_POST['submit'])){

        $name = $_POST['name'];
        $username = $_POST['username'];
        $password = $_POST['password'];
        $confirm_password = $_POST['confirm_password'];

        if (!empty($name) && !empty($username) && !empty($password) && !empty($confirm_password)){

            

            if ($confirm_password != $password){

                $alert = '<div class = "alert alert-danger alert-dismissible fade show" role = "alert">
                <strong><i class = "fas fa-info"></i> Password Not Match!</strong> Confirm Password not matched try again.
                <button type = "button" class = "close" data-dismiss = "alert" aria-label = "Close">
                    <span aria-hidden = "true">&times;</span>
                </button>
                </div>';

                echo $alert;

            }else{

                $result = $marketer->create_marketer($name, $username, $password);

                if ($result == true){

                    $alert = '<div class = "alert alert-danger alert-dismissible fade show" role = "alert">
                    <strong><i class = "fas fa-check"></i> Success!</strong> Marketer created successfully.
                    <button type = "button" class = "close" data-dismiss = "alert" aria-label = "Close">
                    <span aria-hidden = "true">&times;</span>
                    </button>
                    </div>';

                    echo $alert;

                }elseif ($result == false){

                    $alert = '<div class = "alert alert-danger alert-dismissible fade show" role = "alert">
                    <strong><i class = "fas fa-info"></i> Failed!</strong> Marketer creating failed try again. If this error persists, please contact the developer.
                    <button type = "button" class = "close" data-dismiss = "alert" aria-label = "Close">
                    <span aria-hidden = "true">&times;</span>
                    </button>
                    </div>';

                    echo $alert;

                }elseif ($result == 1){

                    $alert = '<div class = "alert alert-danger alert-dismissible fade show" role = "alert">
                    <strong><i class = "fas fa-info"></i> Try Again!</strong> Marketer username already exist please try another username.
                    <button type = "button" class = "close" data-dismiss = "alert" aria-label = "Close">
                    <span aria-hidden = "true">&times;</span>
                    </button>
                    </div>';

                    echo $alert;

                }
            }
        }
    }

?>

это первый раз, когда получил эту ошибку. Я работал над большим количеством проектов с PHP PDO, и у меня никогда не было этой ошибки раньше. я пытался исправить изменение php.ini разных memory_limits, но не исправлено. на это потрачено 2 дня. пожалуйста, помогите мне исправить это. Спасибо!

Можете ли вы показать username_exists код метода?

Lessmore 25.12.2020 06:35

Да, я могу. я отредактировал вопрос, пожалуйста, проверьте. Спасибо!

Tharuka Dananjaya 25.12.2020 06:41

Объем памяти не проблема; проблема в том, что что-то его поглощает. Могут быть задействованы рекурсия или двоичные данные. Дважды проверьте, что запрос работает за пределами php, попробуйте вставлять по одному элементу за раз, а затем добавляйте переменные, пока он не сломается. Могу поспорить, что проблема либо в запросе, либо в данных.

Tim Morton 25.12.2020 07:56

262144 подозрительно круглое число

Your Common Sense 25.12.2020 08:51

а что за строка 13 точно?

Your Common Sense 25.12.2020 08:53

Прежде всего, дайте нам полный класс, чтобы мы могли смотреть на линии. Во-вторых, проверьте, хорошо ли вы редактируете файл php.ini. У вас есть цикл, в котором вы сохраняете данные в строку или массив? Каково время выполнения вашего скрипта?

Ivijan Stefan Stipić 25.12.2020 10:25

1.['Тим Мортон' Спасибо, попробую! ] 2[ Здравый смысл — это строка 13 $stmt = $this->connect()->query($sql); спасибо!] 3[Ivijan Stefan Stipic, я отредактировал вопрос, пожалуйста, проверьте, спасибо]

Tharuka Dananjaya 25.12.2020 10:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
5 426
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо всем, кто пытался помочь мне решить эту проблему. Во всяком случае я нашел проблему. Это моя ошибка: я использовал одно и то же имя метода внутри UserView.class.php и User.class.php. Имя метода username_exists. Вот проблемный код.

//this is the method in modal class

protected function username_exists($username){

    if ($this->if_tableEmpty() != true){

        $this->username = $username;

    
        $sql = "SELECT username FROM user_login WHERE username = ?";

        $stmt = $this->connect()->prepare($sql);

        $stmt->execute([$this->username]);

        $result = $stmt->rowCount();

        return $result;
    }else{
        return 0;
    }
    
    
        
}

   //This is the method in Controller class

   public function username_exists($username){

    $this->username = $username;

    $result = $this->username_exists($this->username);

    if ($result > 0){

        return true;

    }else{

        return false;

    }

}

Еще раз спасибо всем вам!

так это была рекурсия

Your Common Sense 25.12.2020 12:20

Другие вопросы по теме