2013-07-12 5 views
0

Хорошо, поэтому я стремлюсь к практике ООП. Если этот класс немного переборщит за то, что я пытаюсь выполнить, пожалуйста, дайте мне знать, но я просто делаю это для практики. В основном у меня есть этот класс для формы, которая очень простая, все, что она делает, это взять имя, адрес электронной почты и комментарий или сообщение от них и загрузить его в базу данных. Я знаю (на самом деле не знаю, просто уверен), что это функция uploadMessage класса. Интересно, может ли кто-нибудь сказать мне, где я ошибаюсь. Спасибо! Первого класс сообщений -Метод класса PHP не работает?

class message{ 
     public $name; 
     public $email; 
     public $message; 

     function __construct($name, $email, $message){ 
      $this->name = $name; 
      $this->email = $email; 
      $this->message = $message; 
     } 

     public function uploadMessage(){ 
      if(!isset($this->name) || !isset($this->email) || !isset($this->message)){ 
       throw new Exception("One of the fields was incorrectly typed."); 
      } else{ 

       $database = new DB("localhost","username","password","Personal_blog"); 
       $this->name = mysqli_real_escape_string($database->_db,$this->name); 
       $this->email = mysqli_real_escape_string($database->_db,$this->email); 
       $this->message = mysqli_real_escape_string($database->_db,$this->message); 
       $query = "INSERT INTO messages(name,email,message) VALUES('".$this->name."', '".$this->email."', '".$this->message."')"; 
       $results = $database->query($query); 
       if($results->affected_rows > 0){ 
        return true; 
       } 

      } 
     } 
    } 

И ниже код, который я использовал для создания экземпляра класса, а также вызвать метод.

ini_set("display_errors",1); 
    include_once "blog_functions.php"; 
    @ $name = "eric" ;  //$_POST['name']; 
    @ $email = "email";  //$POST['email'];  USING FAKE VALUES HERE FOR TESTING 
    @ $message = "message"; //$_POST['message']; 



    echo "hey"; 

    try{ 
     $message = new message($name, $email, $message); 
     $message->uploadMessage(); 
    } 

Как вы можете видеть, я хочу, чтобы принимать значения из формы с помощью метода $ _POST, однако только для некоторого тестирования я поставил его некоторые случайные значения переменных, и она не будет работать. Новый метод DB() относится к другому классу, который в основном просто расширяет библиотеку php mysqli. И свойство $ database -> _ db этого закрытия на самом деле является обработчиком mysqli, который я использовал для ссылки в mysqli_real_escape_string.

+0

Кстати, причина я думаю, что это uploadMessage() метод, потому что, когда я беру, что из моего кода, эхо «эй»; работает. В противном случае я ничего не получаю. –

+2

Возможно, вы захотите удалить свое имя пользователя и пароль из образца кода. –

+0

Вы знаете, что эти '@' действительно замедляют ваш код? – naththedeveloper

ответ

0

Try:

$query = "INSERT INTO messages(`name`,`email`,`message`) VALUES('".$this->name."', '".$this->email."', '".$this->message."')"; 
Смежные вопросы