Как запустить соединение с базой данных PDO в PHP со структурой ООП?

Рассмотрим следующую PHP-кодировку …

<?php
class MyPDO extends PDO{

const PARAM_host='localhost';
const PARAM_port='3306';
const PARAM_db_name='test';
const PARAM_user='root';
const PARAM_db_pass='';
public $con;

public function __construct(){

$user = MyPDO::PARAM_user;
$password = MyPDO::PARAM_db_pass;

$dsn = 'mysql:host='.MyPDO::PARAM_host.';port='.MyPDO::PARAM_port.';dbname='.MyPDO::PARAM_db_name;

try {
$con = new PDO($dsn, $user, $password);
echo "connected successfully";
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

} //End of constructor functionpublic function fetch(){
// Fetch Data form Table
try{
/*** The SQL SELECT statement ***/
$sql = "SELECT * FROM student";
foreach ($con->query($sql) as $row)
{
print $row['Roll'] .' - '. $row['Name'] . '<br />';
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}//End of function Fetch

} //End of class

$obj = new MyPDO;
$obj->fetch();
?>

Если я запускаю вышеуказанную кодировку, появляется следующее сообщение об ошибке:

Примечание: неопределенная переменная: con в C: \ xampp \ htdocs \ php \ 11.php в строке 33

Неустранимая ошибка: вызов функции-члена query () для необъекта в C: \ xampp \ htdocs \ php \ 11.php в строке 33

Каким будет изменение вышеуказанного сегмента кода?

-3

Решение

поскольку con является переменной-членом, используйте этот синтаксис для ссылки на нее:

$this->con = ...
$this->con->query($sql)
4

Другие решения

Так как вы находитесь в Class контекст объекта, используйте это вместо:

$this->con = new PDO($dsn, $user, $password);
$this->con->query("Your sql query");
0