Я пытаюсь научиться использовать PHP PDO в качестве объектно-ориентированного программирования.Не удается заставить классы PHP PDO и OOP работать
Я попытался следующие этих двух учебных пособий: http://culttt.com/2012/10/01/roll-your-own-pdo-php-class/ http://culttt.com/2012/09/24/prevent-php-sql-injection-with-pdo-prepared-statements/
, но я не могу получить что-либо на любой из них, чтобы работать.
Второй дает ссылку для загрузки предварительно написанного класса обертки class.db.php
от http://www.imavex.com/php-pdo-wrapper-class/
с помощью этого заранее написанного класса обертки и пытаюсь что-то же просто, как этого tutorial.php
(учетные данные изменились):
// Include the database class
include("class.db.php");
// Connect to database
$db = new db("mysql:host=localhost;dbname=my-db-name", "my-username", "my-password");
$results = $db->select("ad_publication");
print_r($results);
Вышеупомянутая страница показывает пустую страницу.
Я знаю, что нет ничего плохого в заранее написанном классе и тексте приведенного выше примера, поскольку он был скопирован непосредственно из учебника, и комментарии полны благодарности и похвалы.
Я знаю, что есть nothign неправильно с моими учетными данными, как это работает отлично:
try
{
$pdo = new PDO('mysql:host=localhost;dbname=my-db-name', 'my-username', 'my-password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
$output = 'Connection Successful';
echo $output;
}
catch (PDOException $e)
{
$output = 'Unable to connect to the database server.' . $e->getMessage();
echo $output;
exit();
}
и выходы Connection Successful
Мой сервер работает PHP 5.5 и таблицы, используемые в приведенном выше примере является InnoDB
таблицей ,
Когда я запускаю пример оператора выбора мои журналы ошибок показывают:
PHP Notice: Undefined variable: GhG678 in /var/www/vhosts/mywebsite.com.au/httpdocs/booking/tutorial.php on line 7
линия 7:
$db = new db("mysql:host=localhost;dbname=my-db-name", "my-username", "my-password");
PHP Warning: Creating default object from empty value in /var/www/vhosts/mywebsite.com.au/httpdocs/booking/class.db.php on line 18
линия 18:
$this->error = $e->getMessage(); // (from public function __construct)`
PHP Fatal error: Call to a member function select() on a non-object in /var/www/vhosts/mywebsite.com.au/httpdocs/booking/tutorial.php on line 9
линия 9:
$results = $db->select("ad_publication"); // (an existing table with data in it)
Я просто не могу понять, что я мог бы делать неправильно, особенно, как класс-оболочка не была написана мной и никто другой не жалуется на него (куч похвалы), а содержимое tutorial.php было скопировано непосредственно со страницы с измененным только именем таблицы.
Как я уже говорил, использование PDO-соединения и выполнение обычных запросов PDO без класса-оболочки отлично работают.
Может ли кто-нибудь увидеть что-нибудь, что может пойти не так, или знать что-нибудь, на что я должен смотреть?
поэтому вы предоставляете ссылки на учебные пособия, но не на свой 'class.db.php'? так как ошибка происходит с вашим кодом, разве вы не думаете, что было бы полезно это показать? – Sean
Я бы предположил, что вы допустили ошибку в своей версии 'tutorial.php', поскольку это имя переменной, о котором говорит PHP, не определено, выглядит скорее как пароль. Вы должны указать здесь свой код, а не утверждать, что нет ничего плохого. –
«' my-username "или' "my-password" 'выглядят как' '$ GhG678" '? где вы забыли удалить '$', поэтому он считает, что 'GhG678' является var' $ GhG678' вместо строки? – Sean