Hi there, I'm new to OO-PHP and have encountered a problem that I just can't figure out. I have a class called DBAccess that extends mysqli. In a nutshell, it looks like this: class DBAccess extends mysqli { private static $instance; private static $preferences; /** Create an instance of DBAccess. */ private function __construct($host, $port, $user, $pass, $name) { self::$instance = parent::__construct($host, $user, $pass, $name); } /** Populate and/or return an instance of DBAccess. */ public function getInstance() { if (empty(self::$instance)) { $preferences = Preferences::getInstance(); // Let's set the database defaults if not previously set. if (self::$host == null) { DBAccess::setHost($preferences->getProperty("TestDbHost")); } if (self::$port == null) { DBAccess::setPort($preferences->getProperty("TestDbPort")); } if (self::$user == null) { DBAccess::setUser($preferences->getProperty("TestDbUser")); } if (self::$pass == null) { DBAccess::setPass($preferences->getProperty("TestDbPass")); } if (self::$name == null) { DBAccess::setName($preferences->getProperty("TestDbName")); } self::$instance = new DBAccess(self::$host, self::$port, self::$user, self::$pass, self::$name); return self::$instance; } } . . . } I also have a class, call it MyClass, that tries to connect using DBAccess and insert a record. It can connect to the database, but encounter a problem (Call to a member function bind_param() on a non-object) when I try to insert a record. Here's the MyClass class (some of the complexity removed): class MyClass { private static $conn; private static $preferences; /** Create an instance of ContactInformation. */ public function __construct() { self::$conn = DBAccess::getInstance(); self::$preferences = Preferences::getInstance(); } /** Populate instance. */ public function set($args) { // Calls to $this->set<ARG>; } /** Insert record. */ public function insert() { $sql = "INSERT INTO table (" . "field_1, " . "field_2, " . "field_3) " . "?, " . "?, " . "?)"; echo "Server version: " . self::$conn->server_info; $stmt = self::$conn->prepare($sql); $stmt->bind_param('sssssssssssss', $this->getField1(), $this->getField2(), $this->getField3()); $stmt->execute(); $stmt->close(); } } If I execute the following code: $conn = DBAccess::getInstance(); $someClass = new Class(); $someClass->set(<ALL THE ARGS); $someClass->insert(); I see the following output: Server version: 5.0.21-Debian_3ubuntu1-log Fatal error: Call to a member function bind_param() on a non-object in C:\blah\blah\blah The fact that the server version is correctly displayed, suggests that it is connecting. Why is it having issues with the $stmt? Anyone know? The smallprint: The DBAccess class looks a little funky - I'm playing around with the Singleton Design Pattern, and plan to refine it once I get the kinks (like this) worked out. Thanks in advance for any thoughts. - Leee -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php