2015-05-15 2 views
2

Connection здесьФатальная ошибка: Вызов функции-члена ... на строку

class connection{ 

private $hostname = "localhost"; 
private $username = "root"; 
private $password = ""; 
private $database = "idea"; 
private $conn; 

public function __construct(){ 
    $this->conn = new mysqli($this->hostname, $this->username, $this->password, $this->database)or die("Error Connection To MySQL"); 
} 

public function getConn(){ 
    return $this->conn; 
} 
?> 

я сомневаюсь, что его связь, но только упаковывают ... его работает для всех других запросов, но кто знает.

Во-вторых, включает в себя все здесь, как так

<?php 
session_start(); 

    if ($_SESSION['loggedin'] != 1) { 
    header('location: index.php'); 
    } 

    include 'connection.php'; 
    include 'users.php'; 
    include 'ideas.php'; 
    $conn = new connection(); 
    $user = new users($conn->getConn()); 
    $idea = new ideas($conn->getConn()); 
    ?> 

предпоследний вот мой запрос внутри класса

<?php 

class ideas{ 

    private $conn; 

    public function __construct($db){ 
     $this->conn = $db; 
    } 

    public function checkIdea($title){ 
     $result = $this->conn->query("SELECT * FROM ideas WHERE title = '$title'"); 
     return $result; 
    } 
?> 

И теперь, наконец, здесь есть функция, я вызываю на главной странице!

<?php 
      if (isset($_POST['addidea'])) { 
       $title = mysql_real_escape_string($_POST['title']); 
       $idea = mysql_real_escape_string($_POST['idea']); 

       $check = $idea->checkIdea($title); // <-- sais this is the error here... 

       if ($check->num_rows == 0) { 
       echo $idea->getUserId($_SESSION['username']); 
       }else{ 
       echo "Sorry that iDea title is already taken, please use another!"; 
       } 
      } 
      ?> 

Я понятия не имею, почему это его делать, что это ошибка, я никогда не прийти через него, прежде чем (вызов функции-члена в строке) ив используется один и тот же запрос/макет, как я сделал для входа в систему и т.д. нет Идея, почему это делает все ответы.

ответ

6

Вы делаете:

$idea = mysql_real_escape_string($_POST['idea']); 

Так $ идея является строкой в ​​настоящее время. Тогда вы делаете:

$check = $idea->checkIdea($title); 

Там нет метода checkIdea на струнах.

+0

Черт его всегда что-то простое, что я упускаю из виду ... спасибо –

+0

Добро пожаловать :-) Не забудьте отметить этот вопрос как решенный, и этот ответ как ответ. –

+0

Я наткнулся на этот Q & A из поиска Google, связанного с другим вопросом. Что также происходит с кодом OP, так это то, что они связаны с использованием mysqli_' api, но используют 'mysql_' функции, которые не смешиваются. «Технически правильное» использование должно было быть «$ idea = mysqli_real_escape_string» ($ connection, $ _POST ['idea']); и то же самое для других. –

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