multiple PHP: Création d'une table DataBase dans une classe en tant que fonction



cakephp3 query (1)

Je vous recommande de regarder MySQLi ou PDO puisque vous utilisez la fonction désapprouvée mysql qui est vulnérable en ce moment. J'ai mis à jour votre classe (non testée) pour vous aider à démarrer. Cela corrige également votre problème d'origine de ne pas être en mesure de créer une table.

class DataBase {

    private $link;
    // May not need these, see updated __construct method
    private $host, $username, $password, $database;

    public function __construct($host, $username, $password, $database){
        // Unless you need them elsewhere, no reason to set $this->host, $this->username, etc...you can just access directly like below
        $this->link = new mysqli($host, $username, $password, $database);

        // Check connection (which also checks selection of database)
        if ($this->link->connect_error) {
            die("Connection failed: " . $this->link->connect_error);
        }
    }

    // You will need to research and update this to work with mysqli (right now it's ripe for SQL injection)!
    public function query($query) {
        $result = mysql_query($query);
        if (!$result) die('Invalid query: ' . mysql_error());
        return $result;
    }

    // This method will create a table based on the SQL you send it
    public function create_table($sql) {
        if ($this->link->query($sql) === TRUE) {
            return "Table created successfully";
        } else {
            return "Error creating table: " . $this->link->error;
        }
    }

    // Close connection
    public function __destruct() {
        $this->link->close();
    }
}

J'essaie de raccourcir mon code non seulement pour la lisibilité, mais aussi pour la personnalisation du projet sur lequel je travaille.

J'ai créé une classe qui se connecte à la base de données, mais je suis aux prises avec une fonction à utiliser qui va créer une table avec des colonnes.

La classe ressemble à ceci:

class DataBase {

private $link;
private $host, $username, $password, $database;

public function __construct($host, $username, $password, $database){
    $this->host        = $host;
    $this->username    = $username;
    $this->password    = $password;
    $this->database    = $database;

    $this->link = mysql_connect($this->host, $this->username, $this->password)
        OR die("There was a problem connecting to the database.");

    mysql_select_db($this->database, $this->link)
        OR die("There was a problem selecting the database.");

    return true;
}

public function query($query) {
    $result = mysql_query($query);
    if (!$result) die('Invalid query: ' . mysql_error());
    return $result;
}

public function __destruct() {
    mysql_close($this->link)
        OR die("There was a problem disconnecting from the database.");
}

}

Comme vous pouvez le voir, la méthode de requête a déjà été ajoutée. Un exemple de comment son exécution est:

$db = new DataBase('localhost',$user,$pass,$name);
$db->query('SELECT * FROM table WHERE id="0"');

Quelqu'un pourrait-il m'a envoyé un code pour ajouter la fonction pour ajouter la table d'insertion? J'ai essayé ceci:

public function create_table($t_data) {
    $result = $t_data;
    if (!$result) die('Invalid query: ' . mysql_error());
    return $result;
}

Usage:

$t_data = 'CREATE TABLE log_users(
     uid VARCHAR(1024) NOT NULL,
     username VARCHAR(33) NOT NULL,
     password VARCHAR(18) NOT NULL,
     admin VARCHAR(1) DEFAULT 0,
     key VARCHAR(18) NOT NULL,
     constant VARCHAR(1) DEFAULT 0)';

 $db->create_table($t_data);

Merci d'avance!





insert