php, как подключиться к базе данных как классу, отправить SQL-отчеты и вернуть результат - PullRequest
0 голосов
/ 04 апреля 2019

Простите, если вопрос немного странный
Я могу уточнить, если это необходимо:

У меня есть код, который может подключаться к базе данных mysql как обычно, однако я инкапсулировал его как класс:

<?php
define("HOST", "127.0.0.1");     // The host you want to connect to.
define("USER", "phpuser");    // The database username.
define("PASSWORD", "Secretpassword");    // The database password.

class DBConnection{

    function conn($sql, $database){
        $DB = new mysqli(HOST,USER,PASSWORD,$database);
        if ($DB->connect_error){
            die("Connection failed: " . $DB->connect_error);
            exit();
        }

        if ($result = $DB->query($sql)){
            return TRUE;
            $DB->close();
         } 
         else{            
             echo "Error: " . $sql . "<br>" . $DB->error;            
             $DB->close();
         }
    }
}
?>

Я сделал это таким образом, чтобы я мог включить этот класс в любую последующую php-страницу и разрешить им отправлять ему SQL-отчет и базу данных, см. Ниже в качестве примера:

$sql = ("INSERT INTO  users (first_name, last_name, username, email, password, group_level) VALUES ('John', 'Doah','JDoah', 'example@email', 'password', 'user')");

        $DB = new DBConnection;
        $result = $DB->conn($sql,"members");

        if ($result ==TRUE){
            return "Record added sucessfully";
        }

Это отлично работает. Тем не менее, я собираюсь отправить другие SQL-отчеты в DBConnection.

Как мне это сделать, и чтобы он передал обратно любые результаты, которые он получает? ошибки, логические значения, данные строки и т. д. Вызывающая программа будет беспокоиться о ее разборе.

Надеюсь, это имеет смысл.

1 Ответ

1 голос
/ 04 апреля 2019

Это старый класс, который я использовал в те времена, когда mysql все еще работал, но его нужно обновить для mysqli или новее

class DBManager{
    private $credentials = array(
        "host" => "localhost",
        "user" => "",
        "pass" => "",
        "db" => ""
    );

    function DBManager(){
        $this->ConnectToDBServer();
    }

    function ConnectToDBServer(){
        mysql_connect($this->credentials["host"],$this->credentials["user"],$this->credentials["pass"]) or die(mysql_error());
        $this->ConnectToDB();
        session_start();
    }

    function ConnectToDB(){
        mysql_select_db($this->credentials["db"]) or die(mysql_error());
    }

    function Insert($tableName,$data){
        $parameters = '';

        $len = count($data);
        $i = 0;
        foreach($data as $key => $value){
            if(++$i === $len){
                $parameters .= $key . "='$value'";
            }else{
                $parameters .= $key . "='$value'" . ", ";
            }
        }

        $query = "INSERT INTO $tableName SET $parameters";

        mysql_query($query) or die(mysql_error());
        return true;
    }

    function GetRow($tableName,$select,$where){
        $selection = '';

        $len = count($select);
        $i = 0;
        foreach($select as $key){
            if(++$i === $len){
                $selection .= $key;
            }else{
                $selection .= $key . ",";
            }
        }

        $whereAt = '';

        foreach($where as $key => $value){
            $whereAt .= $key . "='$value'";
        }

        $query = "SELECT $selection FROM $tableName WHERE $whereAt";
        $result = mysql_query($query);

        while($row = mysql_fetch_array($result)){
            return $row;
        }
    }
}

Ключевым моментом здесь является то, что вы можете создать постоянное соединение с вашей базой данных, не переписывая кучу кода

Пример

global $DB;
$DB = new DBManager();

Так как соединение происходит в конструкторе, у вас теперь будет соединение на странице, которую вы называете этим кодом, и вы можете начать получать и настраивать базу данных, используя $DB->GetRow() и $DB->Insert(), что значительно упрощает работу и моделируется. после экземпляра $wpdb, который является классом, который управляет базой данных на сайтах WordPress

Примеры * +1014 * Для этих примеров мы предположим, что у вас есть таблица как таковая enter image description here Вставить нового студента //create an associative array $data = array( "student_id" => 1, "birth_date" => "02/06/1992", "grade_level" => 4 ); //Send Call $dm->Insert("student",$data); Получить данные //Create selection $selection = array("grade_level"); //Create associative array for where we want to find the data at $where = array( "id" => 1 ); //Get Result $result = $dm->GetRow("student",$selection,$where); //do something with result echo $result->grade_level;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...