За последние 24 часа нас посетили 18399 программистов и 1636 роботов. Сейчас ищут 1500 программистов ...

Fatal error: Exception thrown without a stack frame in Unk..

Тема в разделе "PHP для новичков", создана пользователем trofian, 9 окт 2010.

  1. trofian

    trofian Активный пользователь

    С нами с:
    22 сен 2010
    Сообщения:
    10
    Симпатии:
    0
    Вобщем решил начать изучать ООП в php и вылазит такая ошибка
    Код (Text):
    1. Fatal error: Exception thrown without a stack frame in Unknown on line 0
    Хотя скрипт выполняется правильно

    PHP:
    1. <?php
    2. class Widget {
    3.     //connect info
    4.     private $server;
    5.     private $user;
    6.     private $password;
    7.     private $db;
    8.     //----------
    9.    
    10.     private $id;
    11.     private $name;
    12.     private $description;
    13.     private $hDB;
    14.     private $needsUpdating = false;
    15.    
    16.     public function __construct($widgetID){
    17.         $this->server = 'localhost';
    18.         $this->user = '*******';
    19.         $this->password = '*******';
    20.         $this->db = 'test';
    21.        
    22.         $this->hDB = mysql_connect($this->server, $this->user, $this->password) or die('Ошибка MySQL');
    23.         mysql_select_db($this->db);
    24.        
    25.         if(! is_resource($this->hDB)){
    26.             throw new Exception ('Невозможно подключиться к DB!');
    27.             }
    28.        
    29.         $sql = "SELECT `name`, `description` FROM `widget` WHERE `widgetid`='$widgetID' ;";
    30.         $rs = mysql_query($sql);
    31.         if(! is_resource($rs)) {
    32.             throw new Exception ("Произошла Ошибка при выборе db!");
    33.             }
    34.         if(! mysql_num_rows($rs)){
    35.             throw new Exception ('Указанная запись в db отсутствует!');
    36.             }
    37.        
    38.         $data = mysql_fetch_assoc($rs);
    39.         $this->id = $widgetID;
    40.         $this->name = $data['name'];
    41.         $this->description = $data['description'];
    42.     }
    43.    
    44.     public function getName(){
    45.         return $this->name;
    46.         }
    47.     public function getDescription(){
    48.         return $this->description;
    49.         }
    50.     public function setName($name){
    51.         $this->name = $name;
    52.         $this->needsUpdating = true;
    53.         }
    54.     public function setDescription($description){
    55.         $this->description = $description;
    56.         $this->needsUpdating = true;
    57.         }
    58.     public function __destruct(){
    59.         if(! $this->needsUpdating){
    60.             return;
    61.             }
    62.        
    63.         $sql = "UPDATE `widget` SET ";
    64.         $sql .= "name = '" . mysql_real_escape_string($this->name) . "', ";
    65.         $sql .= "description='" . mysql_real_escape_string($this->description) . "' ";
    66.         $sql .= "WHERE widgetid='" . $this->id . "' ";
    67.         $rs = mysql_query($sql);
    68.         if(! is_resource($rs)){
    69.             throw new Exception('Произошла Ошибка при обновлении DB.');
    70.             }
    71.            
    72.         mysql_close($this->hDB);
    73.         }
    74.         }
    75. ?>
    и вот

    PHP:
    1. <?php
    2.     require_once('class.Widget.php');
    3.    
    4.     try{
    5.         $objWidget = new Widget(1);
    6.        
    7.         print "Имя элемента: " . $objWidget->getName() . "<br>\n";
    8.         print "Описание элемента: " . $objWidget->getDescription() . "<br>\n";
    9.         $objWidget->setName('test');
    10.         $objWidget->setDescription('Это элемент test!');
    11.         }catch (Exception $e){
    12.             die ("Произошла ошибка: " . $e->getMessage());
    13.             }
    14. ?>
    Результат работы:
    Код (Text):
    1. Имя элемента: test
    2. Описание элемента: Это элемент test!
    3.  
    4. Fatal error: Exception thrown without a stack frame in Unknown on line 0
     
  2. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    Exception в деструкторе