Creació de la BD i la taula

De Wiki personal d'en Guillem Serrat

Creació de la BD i de la taula amb un sol fitxer

Per aquesta practica s'ha desenvolupat un unic fitxer PHP que realitza dos connexions a MariaDB. La primera per crear la BD i la segona per crear-hi la taula.


La BD s'anomenarà preferencies i tindrà una codificació de caracters UTF-8. L'usuari IOT tindrà permisos de lectura i escriptura mentre que l'usuari convidat únicament de lectura

// Definim els paràmetres per realitzar la connexió
$servername = "127.0.0.1"; 
$username = "root"; 
$password = "fjeclot";

try {
      // Definim un nou objecte de la classe PDO amb els atributs: host al que ens connectarem, el nom d'usuari i contrasenya.    
      $conn = new PDO("mysql:host=$servername", $username, $password); 
                
      // A través de la funció setAttribute, agafem el tipus d'error en cas de que n'hi hagi algun
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
      // Definim una variable que és l'ordre que s'executara, la qual és crear una BBDD nova amb nom "myDBPDO"
      $sql = "CREATE DATABASE IF NOT EXISTS preferencies CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; 
                
      // Dins de la connexió, executem la variable sql (que és l'ordre vista anteriorment)
      $conn->exec($sql); 

Un cop creada la BD, iniciarem una segona connexio que aquesta vegada incloura el nom de la BD creada anteriorment i crearem una taula de nom canvis_idioma amb les següents columnes:

id INT AUTO_INCREMENT PRIMARY KEY,
idioma VARCHAR(10) NOT NULL,
data_canvi DATETIME NOT NULL,
ip_client VARCHAR(45) DEFAULT NULL,
nom_usuari VARCHAR(50)

A més a més, haurem d'especificar la codificació de la taula també com a UTF-8

// Segona connexió per crear la taula
$servidor = "127.0.0.1"; 
$usuari = "root"; 
$contrasenya = "fjeclot";
$nomDB = "preferencies";

$conn = new PDO("mysql:host=$servidor;dbname=$nomDB", $usuari, $contrasenya);
                
// A través de la funció setAttribute, agafem el tipus d'error en cas de que n'hi hagi algun
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
// Definim una variable que és l'ordre que s'executara, la qual és crear una BBDD nova amb nom "myDBPDO"
$sql = "CREATE TABLE canvis_idioma (
       id INT AUTO_INCREMENT PRIMARY KEY,
       idioma VARCHAR(10) NOT NULL,
       data_canvi DATETIME NOT NULL,
       ip_client VARCHAR(45) DEFAULT NULL,
       nom_usuari VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"; 

$conn->exec($sql); 

// Si es crea correctament
echo "Base de Dades i taula creades correctament<br>"; 

Per ultim, es pot donar el cas que MariaDB no tingui la zona horaria correcte. Per establir la zona horaria de Catalunya, haurem d'editar el fitxer de configuracio de MariaDB (/etc/mysql/mariadb.conf.d/50-server.cnf) i afegir el següent:

[mysqld]
default-time-zone = '+01:00'