2016-12-14 5 views
0

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

Я пытаюсь добавить функцию поиска на свой сайт, но по какой-то причине результаты поиска не отображаются. В моей error_log я получаю эту ошибку:

PHP Fatal error: Call to a member function prepare() on null in /home/..../search.php on line 9

что эта линия:

$query = $pdo->prepare("SELECT * FROM subs WHERE sub_title LIKE '%$search%' LIMIT 0, 10"); 

Вот мой search.php код:

<?php 
require_once('includes/config.php'); 
include("includes/header.php"); 

// Search from MySQL database table 
$search = $_POST['search']; 
$query = $pdo->prepare("SELECT * FROM subs WHERE sub_title LIKE '%$search%' LIMIT 0, 10"); 
$query->bindValue(1, "%$search%", PDO::PARAM_STR); 
$query->execute(); 

// Display search result 
if(!$query->rowCount() == 0) { 
echo "Search found:<br>"; 
echo "<table>"; 
echo "<tr><td>Title</td><td>Category></td><td>Language</td><td>Time</td><td>Download</td></tr>"; 
while($results = $query->fetch()) { 
    echo "<tr><td>"; 
    echo $results['sub_title']; 
    echo "</td><td>"; 
    echo $results['category']; 
    echo "</td><td>"; 
    echo $results['sub_lang']; 
    echo "</td><td>"; 
    echo $results['timestamp']; 
    echo "</td><td>"; 
    echo $results['sub_data']; 
    echo "</td></tr>"; 
} 

echo "</table>"; 
} else { 
echo "Nothing found"; 
} 

?> 

Вот мой config.php

<?php 
$username = '------'; 
$password = '------'; 

try { 
$conn = new PDO('mysql:host=localhost;dbname=-----', $username, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
)); 
} 

catch(PDOException $e) { 
echo "Failed to connect to database!" . "<br><br>"; 
echo $e->getMessage(); 
} 
?> 

и вот моя поисковая форма, которая находится в t он header.php

<form class="form-inline" action="search.php" method="POST"> 
    <input class="form-control" name="search" id="search" type="text" placeholder="Search"> 
</form> 
+2

I thik you probaly предназначено для использования $ conn вместо $ pdo – e4c5

ответ

0

вы используете: $query = $pdo->prepare

Оно должно быть:

$query = $conn->prepare()

Потому что я ленивый кодировщик я сделал новый класс, чтобы сохранить немного время:

class DBCommon 
{ 
    private $conn; 

    /** @var Common */ 
    public $common; 

    public function __construct() 
    { 
     $database = new Database(); 
     $db = $database->dbConnection(); 
     $this->conn = $db; 
    } 

    public function runQuery($sql) 
    { 
     $stmt = $this->conn->prepare($sql); 
     return $stmt; 
    } 
} 
+0

Большое спасибо! – PapT