Conversione da MySQLi a PDO - pt. 1
All checks were successful
Deploy / trigger (push) Successful in 17s

This commit is contained in:
2026-04-12 20:23:39 +02:00
parent 0a46c7e901
commit 3752c65f1d
2 changed files with 61 additions and 57 deletions

View File

@@ -7,11 +7,21 @@ if (isset($_GET['s'])) {
// Ricerca film dal DB // Ricerca film dal DB
$conn = mysqli_connect("localhost", "root", "", "film_attori"); // Questi valori vengono letti automaticamente
$host = getenv('DB_HOST'); // Sarà "local_db"
$db = getenv('DB_NAME'); // Sarà "nomerepository-nomeutente"
$user = getenv('DB_USER'); // Uguale al nome DB
$pass = getenv('DB_PASS'); // Password generata casualmente ad ogni deploy
$charset = 'utf8mb4';
if ($conn === false) { $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
exit("<code>Errore: impossibile stabilire una connessione " . mysqli_connect_error() . "</code>");
try {
$pdo = new PDO($dsn, $user, $pass);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int) $e->getCode());
} }
// Collegamento al DB effettuato // Collegamento al DB effettuato
// Leggo ID // Leggo ID
@@ -30,43 +40,30 @@ if (!is_numeric($_GET['id']) || $_GET['id'] === "" || $_GET['id'] === null) {
} }
$idFilm = intval($_GET['id']); $idFilm = intval($_GET['id']);
$query = "SELECT film.id_film, film.nome, film.trama, film.durata, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere AND film.id_film = " . $idFilm . " ORDER BY film.data_uscita"; $query = "SELECT film.id_film, film.nome, film.trama, film.durata, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere AND film.id_film = :id ORDER BY film.data_uscita";
// Leggo i dati del film e faccio il JOIN per avere il nome del genere // Leggo i dati del film e faccio il JOIN per avere il nome del genere
$res = mysqli_query($conn, $query); $stmt = $pdo->prepare($query);
$stmt->execute([
':id' => $idFilm
]);
if ($res === false) { $row = $stmt->fetch();
// Codice HTTP 500: Errore
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
$row = mysqli_fetch_array($res);
mysqli_free_result($res);
if (!$row) { if (!$row) {
// Codice HTTP 404: Not found // Codice HTTP 404: Not found
http_response_code(404); http_response_code(404);
echo "<code>Film non trovato!</code>"; echo "<code>Film non trovato!</code>";
mysqli_close($conn);
return; return;
} }
// Ottengo gli attori // Ottengo gli attori
$queryAttori = "SELECT attori.nome, attori.cognome, attori.data_nascita, recitare.ruolo FROM attori, recitare WHERE attori.id_attore = recitare.id_attore AND recitare.id_film = " . $idFilm . " ORDER BY recitare.ruolo DESC "; $queryAttori = "SELECT attori.nome, attori.cognome, attori.data_nascita, recitare.ruolo FROM attori, recitare WHERE attori.id_attore = recitare.id_attore AND recitare.id_film = :id ORDER BY recitare.ruolo DESC ";
$resAttori = mysqli_query($conn, $queryAttori); $stmt = $pdo->prepare($queryAttori);
$stmt->execute([
if ($resAttori === false) { ':id' => $idFilm
// Codice HTTP 500: Errore ]);
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
?> ?>
@@ -123,7 +120,7 @@ if ($resAttori === false) {
<div class="grid films"> <div class="grid films">
<?php <?php
$test = true; $test = true;
while ($rowAttori = mysqli_fetch_array($resAttori)) { while ($rowAttori = $stmt->fetch()) {
$test = false; $test = false;
?> ?>
<div class="attore"> <div class="attore">
@@ -136,9 +133,6 @@ if ($resAttori === false) {
</div> </div>
<?php <?php
} }
mysqli_free_result($resAttori);
mysqli_close($conn);
?> ?>
</div> </div>
<?php <?php

View File

@@ -6,37 +6,48 @@ if (isset($_GET['s'])) {
} }
// Ricerca film dal DB // Ricerca film dal DB
// Questi valori vengono letti automaticamente
$host = getenv('DB_HOST'); // Sarà "local_db"
$db = getenv('DB_NAME'); // Sarà "nomerepository-nomeutente"
$user = getenv('DB_USER'); // Uguale al nome DB
$pass = getenv('DB_PASS'); // Password generata casualmente ad ogni deploy
$charset = 'utf8mb4';
$conn = mysqli_connect("localhost", "root", "", "film_attori"); $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
if ($conn === false) { try {
exit("<code>Errore: impossibile stabilire una connessione " . mysqli_connect_error() . "</code>"); $pdo = new PDO($dsn, $user, $pass);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int) $e->getCode());
} }
// Collegamento al DB effettuato // Collegamento al DB effettuato
$query = "SELECT film.id_film, film.nome, film.trama, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere ORDER BY film.data_uscita";
$searched = ""; $searched = "";
// Leggo la ricerca // Leggo la ricerca
if (isset($_GET['q'])) { $params = [];
if (is_string($_GET['q']) && $_GET['q'] !== "" && $_GET['q'] !== null) {
$nome = htmlspecialchars($_GET['q']); if (isset($_GET['q']) && $_GET['q'] !== '') {
$searched = $nome; $nome = $_GET['q'];
$query = "SELECT film.id_film, film.nome, film.trama, film.data_uscita, generi.nome as genere FROM film, generi WHERE film.id_genere = generi.id_genere AND film.nome LIKE '%" . $nome . "%' ORDER BY film.data_uscita"; $searched = $nome;
}
$query = `SELECT film.id_film, film.nome, film.trama, film.data_uscita, generi.nome as genere
FROM film
JOIN generi ON film.id_genere = generi.id_genere
WHERE film.nome LIKE :nome
ORDER BY film.data_uscita`;
$params[':nome'] = "%$nome%";
} else {
$query = `SELECT film.id_film, film.nome, film.trama, film.data_uscita, generi.nome as genere
FROM film
JOIN generi ON film.id_genere = generi.id_genere
ORDER BY film.data_uscita`;
} }
// Leggo i dati del film e faccio il JOIN per avere il nome del genere // Leggo i dati del film e faccio il JOIN per avere il nome del genere
$res = mysqli_query($conn, $query); $stmt = $pdo->prepare($query);
$stmt->execute($params);
if ($res === false) {
// Codice HTTP 500: Errore
http_response_code(500);
echo "<code>Errore: impossibile eseguire la query. " . mysqli_error($conn) . "</code>";
mysqli_close($conn);
exit();
}
?> ?>
@@ -71,7 +82,8 @@ if ($res === false) {
<h1>Film in sala</h1> <h1>Film in sala</h1>
<form action="." method="GET"> <form action="." method="GET">
<fieldset> <fieldset>
<input type="text" id="query" name="q" value="<?php echo $searched; ?>" placeholder="Scrivi il titolo..."> <input type="text" id="query" name="q" value="<?php echo $searched; ?>"
placeholder="Scrivi il titolo...">
<button type="submit">Cerca</button> <button type="submit">Cerca</button>
</fieldset> </fieldset>
</form> </form>
@@ -84,12 +96,13 @@ if ($res === false) {
$test = true; $test = true;
while ($row = mysqli_fetch_array($res)) { while ($row = $stmt->fetch()) {
$test = false; $test = false;
?> ?>
<a href="<?php echo "../film?id=" . $row['id_film']; ?>"> <a href="<?php echo "../film?id=" . $row['id_film']; ?>">
<div class="film"> <div class="film">
<img src="<?php echo "../api/v1/img/?n=" . urlencode($row['nome'] . ' ' . date('Y', strtotime($row['data_uscita']))); ?>"> <img
src="<?php echo "../api/v1/img/?n=" . urlencode($row['nome'] . ' ' . date('Y', strtotime($row['data_uscita']))); ?>">
<h5><?php echo $row['nome']; ?></h5> <h5><?php echo $row['nome']; ?></h5>
<div class="genere"> <div class="genere">
<?php echo $row['genere']; ?> <?php echo $row['genere']; ?>
@@ -99,9 +112,6 @@ if ($res === false) {
<?php <?php
} }
mysqli_free_result($res);
mysqli_close($conn);
?> ?>
</div> </div>
<?php <?php