Решение принято из комментария, поэтому я не могу принять ответ, чтобы это было закрыто. Но я опубликовал фактическое решение, которое работает для меня нижеПовторное использование соединения mysql в oop php
Я новичок в ООП, и я просто не могу понять, даже после прочтения нескольких примеров, как использовать одно и то же соединение mysql без использования $ GLOBALS.
Если кто-то может объяснить это, как будто я два года, это было бы очень полезно.
Это мой файл подключения.
$hostname = 'hostname';
$username = 'db';
$password = 'password';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=db", $username, $password);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
, но затем использовать это в классе или функции я это сделать:
class basic {
function simple($id) {
$query = $GLOBALS['dbh']->query("SELECT * FROM table WHERE id = $id");
$row = $query->fetch(PDO::FETCH_OBJ);
$thing = $row->partoftable;
echo $thing;
}
}
$first = new basic();
$first->simple(12);
Это, конечно, вернуть то, что я искал $ вещь с идентификатором 12. Но как мне это сделать без GLOBALS ['dbh'] для подключения к db?
Также не стесняйтесь разорвать все остальное, но просто имейте в виду, что это был самый простой пример того, что я говорю.
Заранее спасибо.
Это решение, которое работает для меня на основе приведенного ниже комментария.
class basic {
function __construct($dbh)
{
$this->dbh = $dbh;
}
function simple($id) {
$query = $this->dbh->query("SELECT * FROM table WHERE id = $id");
$row = $query->fetch(PDO::FETCH_OBJ);
$thing = $row->partoftable;
echo $thing;
}
}
$first = new basic($dbh);
$first->simple(12);
Thanks. надеюсь, это поможет кому-то другому.
Основные сведения о '$ dbh', passit through' __constructor' подробнее [Dependecy Инъекция] (http://fabien.potencier.org/article/11/what-is-dependency-injection) – cske
@cske Спасибо! это было так просто, что я просто не мог изначально обзавестись моим мозгом. Мне просто нужно передать его в $ first = new basic ($ dbh), а затем использовать __constructor, чтобы это произошло в классе. Просто пытайтесь быть более явным, если кто-то другой сталкивается с этой проблемой. Еще раз спасибо! – mikescorelle