У меня есть следующий код, который состоит из класса DB
, который устанавливает соединение с базой данных SQL с помощью mysqli.Использование соединения mysqli PHP как объекта для других классов
<?php
class DB
{
private $mysqlilink;
private $errors;
function __construct($errors = array())
{
$this -> errors = $errors;
$this -> connect();
}
function connect()
{
$server = "127.0.0.1";
$user_name = "un";
$password = "pw";
$database = "db";
if ($this -> mysqlilink == null)
{
$this -> mysqlilink = new mysqli($server, $user_name, $password, $database);
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
}
return $this -> mysqlilink;
}
function __destruct()
{
$stmt -> close();
}
}
?>
У меня есть планы использовать по крайней мере один класс (в отдельном файле сценарий) с выделенными функциями PHP, которые имеют доступ к базе данных для различных частей сайта. После импорта этого сценария выше, как мне связать его и сделать вызов в базу данных через соединение объекта? Я использую следующий код:
<?php
include_once("connect.php");
class PageFunctions
{
function printText()
{
if ($stmt = $this -> mysqlilink -> prepare("SELECT Text, MoreText FROM mytext WHERE id = 1"))
{
$stmt -> execute(); $stmt -> store_result();
$rows = $stmt -> num_rows;
if ($rows == 0) { return 'Database Not Found'; }
else
{
$stmt -> bind_result($returnedText, $moreReturnedText); // Output variable(s)
while ($stmt -> fetch()) // Return results
{
return 'First text: ' . $returnedText . ' Second text: ' . $moreReturnedText;
}
}
$stmt -> free_result();
return;
}
else { printf("Prepared Statement Error: %s\n", $this -> mysqlilink -> error); }
}
}
?>
Повторюсь, мне нужно использовать первый пример кода, как класс, который формирует объект в нескольких других классов/файлов кода как второй образец кода. Поскольку я новичок в ориентации объектов PHP, я не смог успешно выполнить это, поэтому я подумал, что попрошу совета экспертов, прежде чем придумать плохое решение.
Я реализовал наше решение, но получаю две ошибки. Я неправильно понял ваши инструкции? Извините за несколько отличающиеся имена переменных и функций от образцов исходного вопроса. Все 3 файла кода и ошибки находятся здесь http://pastebin.com/QCva7hDK Спасибо – Keavon
@Keavon похоже, что вы пытались использовать что-то вроде 'this this> mysqlilink' из класса PageIndex. Это свойство DB, в которое вы вошли. PageIndex не впитывает БД, он получает БД как свою собственную БД, поэтому вам нужно получить доступ к этому свойству, например '$ this-> DB -> $ mysqlilink'. Не забудьте принять мой ответ, если вы его оцените :) – m59
Спасибо. Я обязательно отвечу и приму ответ, когда я заставлю его работать. Я добавил «DB ->», который избавился от первого «уведомления», которое он создавал, но я получаю эту ошибку: «Неустранимая ошибка: не удается получить доступ к частному свойству DB :: $ mysqlilink в D: \ XAMPP \ htdocs \ includes \ page_index .php on line 19' – Keavon