1 | <?php |
2 | |
3 | function bdCrea(PDO $con) |
4 | { |
5 | $con->exec( |
6 | 'CREATE TABLE IF NOT EXISTS PASATIEMPO ( |
7 | PAS_ID INTEGER, |
8 | PAS_NOMBRE TEXT NOT NULL, |
9 | CONSTRAINT PAS_PK |
10 | PRIMARY KEY(PAS_ID), |
11 | CONSTRAINT PAS_NOM_UNQ |
12 | UNIQUE(PAS_NOMBRE) |
13 | )' |
14 | ); |
15 | } |
16 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/bdCrea.php"; |
4 | |
5 | class Bd |
6 | { |
7 | |
8 | private static ?PDO $conexion = null; |
9 | |
10 | static function getConexion(): PDO |
11 | { |
12 | if (self::$conexion === null) { |
13 | |
14 | self::$conexion = new PDO( |
15 | // cadena de conexión |
16 | "sqlite:srvbd.db", |
17 | // usuario |
18 | null, |
19 | // contraseña |
20 | null, |
21 | // Opciones: conexiones persistentes y lanza excepciones. |
22 | [PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] |
23 | ); |
24 | |
25 | bdCrea(self::$conexion); |
26 | } |
27 | |
28 | return self::$conexion; |
29 | } |
30 | } |
31 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
4 | require_once __DIR__ . "/Bd.php"; |
5 | |
6 | function pasatiempoAgrega(Pasatiempo $modelo) |
7 | { |
8 | $modelo->valida(); |
9 | $con = Bd::getConexion(); |
10 | $stmt = $con->prepare( |
11 | "INSERT INTO PASATIEMPO |
12 | (PAS_NOMBRE) |
13 | VALUES |
14 | (:nombre)" |
15 | ); |
16 | $stmt->execute([":nombre" => $modelo->nombre]); |
17 | /* Si usas una secuencia para generar el id, |
18 | * pasa como parámetro de lastInsertId el |
19 | * nombre de dicha secuencia, debes |
20 | * ejecutarlo antes del INSERT y pasarle el |
21 | * id generado al SQL. */ |
22 | $modelo->id = $con->lastInsertId(); |
23 | } |
24 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
4 | require_once __DIR__ . "/Bd.php"; |
5 | |
6 | function pasatiempoBusca(int $id): false|Pasatiempo |
7 | { |
8 | $con = Bd::getConexion(); |
9 | $stmt = $con->prepare( |
10 | "SELECT |
11 | PAS_ID AS id, |
12 | PAS_NOMBRE AS nombre |
13 | FROM PASATIEMPO |
14 | WHERE PAS_ID = :id" |
15 | ); |
16 | $stmt->execute([":id" => $id]); |
17 | $stmt->setFetchMode( |
18 | PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, |
19 | Pasatiempo::class |
20 | ); |
21 | return $stmt->fetch(); |
22 | } |
23 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/../../lib/php/recibeFetchAll.php"; |
4 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
5 | require_once __DIR__ . "/Bd.php"; |
6 | |
7 | /** @return Pasatiempo[] */ |
8 | function pasatiempoConsulta() |
9 | { |
10 | $con = Bd::getConexion(); |
11 | $stmt = $con->query( |
12 | "SELECT |
13 | PAS_ID AS id, |
14 | PAS_NOMBRE AS nombre |
15 | FROM PASATIEMPO |
16 | ORDER BY PAS_NOMBRE" |
17 | ); |
18 | $resultado = $stmt->fetchAll( |
19 | PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, |
20 | Pasatiempo::class |
21 | ); |
22 | return recibeFetchAll($resultado); |
23 | } |
24 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/Bd.php"; |
4 | |
5 | function pasatiempoElimina(int $id) |
6 | { |
7 | $con = Bd::getConexion(); |
8 | $stmt = $con->prepare( |
9 | "DELETE FROM PASATIEMPO |
10 | WHERE PAS_ID = :id" |
11 | ); |
12 | $stmt->execute([":id" => $id]); |
13 | } |
14 |
1 | <?php |
2 | |
3 | require_once __DIR__ . "/../modelo/Pasatiempo.php"; |
4 | require_once __DIR__ . "/Bd.php"; |
5 | |
6 | function pasatiempoModifica(Pasatiempo $modelo) |
7 | { |
8 | $modelo->valida(); |
9 | $con = Bd::getConexion(); |
10 | $stmt = $con->prepare( |
11 | "UPDATE PASATIEMPO |
12 | SET PAS_NOMBRE = :nombre |
13 | WHERE PAS_ID = :id" |
14 | ); |
15 | $stmt->execute([ |
16 | ":id" => $modelo->id, |
17 | ":nombre" => $modelo->nombre |
18 | ]); |
19 | } |
20 |