php - How to use static property and method on database connection class? -
can identify wrong lines of code? tried make db connection static class can use globally in class without having use $this->pdo.
the error shown is:
fatal error: call member function prepare() on non-object in c:\wamp\www\carrental\index.php on line 44
<?php class connection { public static $servername = "localhost"; public static $username = "root"; public static $password = ""; public static $dbname = "carrental"; public static $port="3306"; public static $pdo; public static function addconnection() { try { self::$pdo = new pdo("mysql:host=self::$servername;port=self::$port;dbname=self::$dbname", self::$username, self::$password); self::$pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception); } catch(pdoexception $e) { echo 'error: ' . $e->getmessage(); } self::$pdo->query("use self::$dbname"); return self::$pdo; } } class car { public $name; public $maker; public $type; public $colour; public $passanger; public function __construct($param1,$param2,$param3,$param4,$param5) { $this->name=$param1; $this->maker=$param2; $this->type=$param3; $this->colour=$param4; $this->passanger=$param5; } public function addcar() { $sql="insert car(car_name,car_maker,car_type,car_colour,num_passanger)values('{$this->name}','{$this->maker}', '{$this->type}','{$this->colour}','{$this->passanger}')"; $stmt =connection::$pdo->prepare($sql); $stmt->execute(); echo "data inserted!"; } } $car1=new car("honda accord","honda","5 wheeler","red",9); $car1->addcar(); ?>
as @rizier123 said in comment, didn't call addconnection(). so, might need this, inside addcar() method of class car
$sql="insert car(car_name,car_maker,car_type,car_colour,num_passanger)values('{$this->name}','{$this->maker}', '{$this->type}','{$this->colour}','{$this->passanger}')"; $pdo_obj = connection::addconnection(); //get pdo object $stmt = $pdo_obj->prepare($sql); $stmt->execute(); echo "data inserted!";
Comments
Post a Comment