2013-02-20 2 views
2

Я получаю эту ошибку. Я использую файл класса, файл функции, а затем файл представления. Фатальная ошибка: Разрешены памяти исчерпалаPHP OOP PDO Неустранимая ошибка: Допустимая память исчерпана

 public function adminSearchFullName($admin_firstname,$admin_lastname){ 
     $adminsearchresultsfullname = array(); 

     try { 
      $db = database::databaseConnect(); 

      $stmt = $db->prepare('SELECT * FROM personalinfo WHERE firstname like ? AND lastname like ? AND deleted = 0'); 
      $stmt->execute(array('%' . $admin_firstname . '%', '%' . $admin_lastname . '%')); 

      $adminsearchresultsfullname = $stmt->fetchAll(PDO::FETCH_OBJ); 

      if($stmt->rowCount() < 1){ 
       $adminsearchresultsfullname = null; 
      } 
      $db = null; 
     } 
     catch (PDOException $e){ 
      $adminsearchresultsfullname = null; 
     } 
     return $adminsearchresultsfullname; 
    }   

Моя функция выглядит следующим образом:

 function adminSearchFullName($admin_firstname,$admin_lastname){ 
    return $adminsearchresultsfullname = adminSearchFullName($admin_firstname,$admin_lastname); 
} 

И, наконец, моя страница зрения выглядит следующим образом:

if(!empty ($admin_firstname) && !empty($admin_lastname)){ 
        //Query and display contact details based on first and last names. 

        $adminsearchresultsfullname = adminSearchFullName($admin_firstname,$admin_lastname); 
        if ($adminsearchresultsfullname != null){ 
         ?> 
         <a href="index.php">Home</a> | <a href="adduser.php">Add User</a> | <a href="viewusers.php">View Users</a> |<a href="addcontact.php">Add Contact</a> | <a href="viewcontacts.php">View Contacts</a> | <a href="searchcontact.php">Search Contact</a><br /><hr /> 
         <p>Click on the name to see details of the contact.</p> 

         <table cellpadding="5"> 
          <tr> 
           <td> 
            <b>Search result</b> 
           </td> 
          </tr> 

         <?php 

         foreach($adminsearchresultsfullname as $key => $adminfoundfullname){ 
          $admin_id_fullname = $adminfoundfullname->id; 
          $admin_found_fullname_firstname = $adminfoundfullname->firstname; 
          $admin_found_fullname_lastname = $adminfoundfullname->lastname; 
          ?> 
          <tr> 
           <td> 
            <a href="contactdetails.php?id=<?php echo $admin_id_fullname; ?>"><?php echo $admin_found_fullname_firstname . ' ' . $admin_found_fullname_lastname; ?></a> 
           </td> 
          </tr> 
         <?php 
         }?> 
         </table> 
        <?php } 

       }else{ 
        echo 'No record found. Please <a href="searchcontact.php"> return</a> and try a different name.'; 
       } 

Остальное и все другие функции, которые искать либо только первое и последнее имя работает штрафы.

+0

Похоже, что вы достигли предела памяти, попробуйте установить ini_set ('memory_limit', '500M'); – shapeshifter

+1

Извините, нашёл свою проблему: function adminSearchFullName ($ admin_firstname, $ admin_lastname) { return $ adminsearchresultsfullname = contacts :: adminSearchFullName ($ admin_firstname, $ admin_lastname); } – Willem

ответ

1

Вместо увеличения предела памяти вам необходимо уменьшить количество данных, обрабатываемых скриптом. Для этого нужны базы данных. Позвольте базе данных выполнять все задания, а затем возвращать только данные, необходимые на определенной странице. он редко превышает 100 килобайт - иначе pagge будет слишком тяжелым для загрузки браузером.

Однако, похоже, что ваша проблема была вызвана простой рекурсией случайно, и вы уже решили ее.

Смежные вопросы