2016-08-09 9 views
0

Hallo, ich habe eine Frage PDO-Verbindung. Mein conn.php istPDO-Verbindung: Aufruf an eine Elementfunktion prepare() bei null

<?php 
define('host', 'localhost'); 
define('host_user', 'root'); 
define('host_pass', ''); 
define('host_db', 'testdb'); 
class Database { 
public $conn; 
public function Connect() { 
try { 
$conn = new PDO("mysql:host=" . host . ";dbname=" . host_db, host_user, host_pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
echo "Connection error:" . $e->getMessage(); 
} 
} 
} 
?> 

Wenn ich diese verwenden

$dbClass = new Database(); 
$stmt = $dbClass::Connect()->prepare("SELECT * FROM user_posts"); 

kehrt folgende Fehler:

Call to a member function prepare() on null

Warum ist es passiert?

Antwort

1

Sie erhalten einen Fehler, da prepare() eine Funktion von PDO ist, aber da Connect() gibt nichts zurück, du bist prepare() auf nichts fordern.

Sie müssen Connect() ändern, damit das PDO-Objekt zurückgegeben wird. Fügen Sie dies am Ende der Funktion (oder am Ende des Try Blocks) hinzu:

return $conn; 
+0

Danke, es funktioniert !!! – user3227899

+0

@ user3227899 Gern geschehen :-) Denken Sie daran, meine Antwort auszuwählen, wenn es Ihnen geholfen hat, das Problem zu lösen. – BeetleJuice

+0

auswählen? was ist gemein? – user3227899

Verwandte Themen