Создать запрос на выборку в файле и показать его в другом файле - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть вопрос с ООП на PHP и MySQL.

Я работаю с PHP 7, используя ООП, я хочу создать класс Connection.В этом классе
у меня есть метод, который генерирует запрос к базе данных и сохраняет его в массиве.Я хочу, чтобы результат этого массива был открыт в другом классе другого файла.Если я использую оператор if, отправляется одно значение, если я использую цикл while, при запросе вектора в другом файле ничего не отображается.Я хочу создать этот метод, чтобы избежать необходимости переписывать вызовы для соединения с базой данных.

Это код, который будет наследовать класс, который показывает данные.

public function open_connection()
{ 
    $this->connect = new mysqli( self::$SERVER, self::$USER, self::$PASS, $this->DB ) or die ( "Error" ); 
} 

public function close_connection()
{ 
    mysqli_close( $this->connect ); 
}

protected function execute_a_fetch_query( )
{
    $this->open_connection();
    $orderA = $this->connect->query( $this->query );
    $orderB = $this->connect->query( $this->query );
    if ( $this->rows = mysqli_fetch_array( $orderA ) ) { //this sentence avoid a duplicate result from the query
        if ( $this->rows = mysqli_fetch_array( $orderB ) );
    }
    $this->close_connection();
}

Издесь другой метод в классе Show

public function data( $attributes = array() )
{
    $this->query = 'select * from Supplier';
    $this->execute_a_fetch_query();

    echo '<tr>';

    for ( $i = 0; $i < count( $this->_attributes ); $i++ ) {
        echo 
            '<td>'. $this->rows[ $attributes[ $i ] ]. '</td>'; 
    }

1 Ответ

0 голосов
/ 10 декабря 2018

В ООП у вас есть конструктор, который может помочь вам, установив это соединение при создании экземпляра этого объекта, поэтому вам не придется использовать $this->open_connection(); в каждом запросе.

Вместо создания функции open_connection() используйте

function __ construct(){
  $this->connect = new mysqli( self::$SERVER, self::$USER, self::$PASS, $this->DB ) or 
    die ( "Error" );
 }

, поэтому $obj = new BaseClass(); откроет соединение.

вы также можете иметь приватную переменную в том же классе

private $dataObject, которую можно задать в вашем запросе $this->$dataObject = $result;

, и публичную функцию, которую можно вызыватьвернуть переменную.

public function getData()
{
  return $this->$dataObject;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...