Рассмотрим следующую 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
Каким будет изменение вышеуказанного сегмента кода?
поскольку con
является переменной-членом, используйте этот синтаксис для ссылки на нее:
$this->con = ...
$this->con->query($sql)
Так как вы находитесь в Class
контекст объекта, используйте это вместо:
$this->con = new PDO($dsn, $user, $password);
$this->con->query("Your sql query");