tablas - PHP: Crear una tabla de base de datos dentro de una clase como una función
insertar tablas en php (1)
Intento hacer el truco de acortar mi código no solo para la legibilidad sino también para la personalización del proyecto en el que estoy trabajando.
He creado una clase que se conecta a la Base de Datos pero estoy luchando con una función para usar que creará una tabla con columnas.
La clase se ve así hasta ahora:
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.");
}
}
Como puede ver, el método de consulta ya se ha agregado. Un ejemplo de cómo se ejecuta es:
$db = new DataBase(''localhost'',$user,$pass,$name);
$db->query(''SELECT * FROM table WHERE id="0"'');
¿Alguien podría enviarme algún código para agregar la función para agregar la tabla de inserción? He intentado esto:
public function create_table($t_data) {
$result = $t_data;
if (!$result) die(''Invalid query: '' . mysql_error());
return $result;
}
Uso:
$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);
¡Gracias de antemano!
Recomiendo mirar MySQLi
o PDO
ya que está usando la función obsoleta mysql
que es vulnerable tal como está ahora. He actualizado tu clase (no probado) para que comiences. Esto también soluciona el problema original de no poder crear una tabla.
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();
}
}