Skip to content

Instantly share code, notes, and snippets.

@rcervera
Created November 8, 2020 18:16
Show Gist options
  • Save rcervera/71209ff3148393c4e95aa25d1f3f75fa to your computer and use it in GitHub Desktop.
Save rcervera/71209ff3148393c4e95aa25d1f3f75fa to your computer and use it in GitHub Desktop.
Exemples per provar sentències PDO
<?php
// newPDO: connectem amb la BD
$usuari="root";
$password="";
$database ="uf3";
$host = "localhost";
try {
$bd = new PDO('mysql:host='.$host.';dbname='.$database,
$usuari, $password);
} catch (PDOException $e) {
echo "No s'ha pogut connectar amb la Base de dades";
die();
}
// Consultes SQL sense cap paràmetre
$sql = "select id,realname,heroname,gender,race from heroes";
$query = $bd->query($sql);
// fetchAll sense paràmetre retorna un array amb el conjunt de registres de la BD
// Cada registre serà un array amb indexos numèrics i indexos amb el nom de les columnes
// Retorna els resultats de forma duplicada!
$resultat = $query->fetchAll();
echo "<br>Contingut de l'array<br>";
echo "<br>";
foreach ($resultat as $key => $value) {
// mostrarem de forma duplicada el nom real dels superherois
echo "Registre numero: ".$key." ".$value[1]." ".$value['realname']."<br>";
}
// fetchAll: Recuperem tots els registres com un array d'arrays indexats
$sql = "select id,heroname from heroes";
$ordre = $bd->query($sql);
$rows_affected = $ordre->rowCount();
echo "<br>S'han recuparat ".$rows_affected;
$res = $ordre->fetchAll(PDO::FETCH_NUM);
echo "<br>Contingut de l'array<br>";
print_r($res);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero: ".$key." ".$value[0]." ".$value[1]."<br>";
}
// fetchAll: Recuperem tots els registres com un array d'arrays associatius
$sql = "select * from heroes";
$query = $bd->query($sql);
$res = $ordre->fetchAll(PDO::FETCH_ASSOC);
echo "<br>Contingut de l'array<br>";
print_r($res);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero: ".$key." ".$value['heroname']." ".$value['realname']."<br>";
}
// fetchAll: Recuperem tots els registres com un array d'objectes
$sql = "select * from heroes";
$query = $bd->query($sql);
$res = $ordre->fetchAll(PDO::FETCH_OBJ);
echo "<br>Contingut de l'array<br>";
print_r($res);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero: ".$key." ".$value->heroname." ".$value->realname."<br>";
}
echo "<br>Recuperar Un únic registre<br>";
// fetch: Recuperem un únic resgistre com un array associatiu
$sql="select * from heroes where id=1";
$ordre = $bd->query($sql);
$res = $ordre->fetch(PDO::FETCH_ASSOC);
print_r($res);
// Sortida: Array ( [id] => 1 [realname] => Bruce Banner [heroname] => Hulk [gender] => male [race] => human ) Hulk - Bruce Banner - human
// fetch: Recuperem els resgistres un a un com objectes
// En taules molt grans, recuperem 1 a un i mostrem resultat 1 a 1
$sql="select * from heroes";
$ordre = $bd->query($sql);
while($row = $ordre->fetch(PDO::FETCH_OBJ)) {
echo $row->heroname . " - ";
echo $row->realname . " - ";
echo $row->race . "<br/>";
}
/* Sortida:
Hulk - Bruce Banner - human
Iron Man - Tony Stark - human
Spider-Man - Peter Parker - human
Thor - Thor Odinson - Asgardian
Black Widow - Natasha Romanoff - human
*/
// consultes preparades: versió 1
echo "<br>Consultes preparades<br>";
$sql="select * from heroes where gender=:gender and race=:race";
$ordre = $bd->prepare($sql);
$codi = 1;
$genere = 'male';
$race = 'human';
$ordre->bindValue(':gender',$genere); // En la sentència preparada substitueix :gender per el valor de la variable $genere
$ordre->bindValue(':race',$race); // En la sentència preparada substitueix :race per el valor de la variable $race
$ordre->execute();
$res = $ordre->fetchAll(PDO::FETCH_ASSOC);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero ".$key." :".$value['heroname']." ".$value['realname']."<br>";
}
/*
Consultes preparades
Registre numero 0 :Hulk Bruce Banner
Registre numero 1 :Iron Man Tony Stark
Registre numero 2 :Spider-Man Peter Parker
Registre numero 3 :Batman Bruce Wayne
Registre numero 4 :Batman Bruce Wayne
Registre numero 5 :Batman Bruce Wayne
*/
// consultes preparades: versió 2
echo "<br>Consultes preparades 2<br>";
$sql="select * from heroes where gender=? and race=?";
$ordre = $bd->prepare($sql);
$codi = 1;
$genere = 'male';
$race = 'human';
$ordre->bindValue(1,$genere); // En la sentència preparada substitueix :gender per el valor de la variable $genere
$ordre->bindValue(2,$race); // En la sentència preparada substitueix :race per el valor de la variable $race
$ordre->execute();
$res = $ordre->fetchAll(PDO::FETCH_ASSOC);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero ".$key." :".$value['heroname']." ".$value['realname']."<br>";
}
// consultes preparades: versió 3 bindParam
echo "<br>Consultes preparades 3<br>";
$sql="select * from heroes where gender=:gender and race=:race";
$ordre = $bd->prepare($sql);
$codi = 1;
$genere = 'male';
$race = 'human';
$ordre->bindParam(':gender',$genere); // En la sentència preparada substitueix :gender per el valor de la variable $genere
$ordre->bindParam(':race',$race); // En la sentència preparada substitueix :race per el valor de la variable $race
$ordre->execute();
$res = $ordre->fetchAll(PDO::FETCH_ASSOC);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero ".$key." :".$value['heroname']." ".$value['realname']."<br>";
}
$genere = 'female';
$ordre->execute();
$res = $ordre->fetchAll(PDO::FETCH_ASSOC);
echo "<br>";
foreach ($res as $key => $value) {
echo "Registre numero ".$key." :".$value['heroname']." ".$value['realname']."<br>";
}
// INSERT en una taula amb clau auto incremental
$heroname = 'Batman';
$realname = 'Bruce wayne';
$gender = 'male';
$race = 'human';
$sql ="insert into heroes(heroname,realname,gender,race) values
(:heroname,:realname,:gender,:race)";
$ordre = $bd->prepare($sql);
$ordre->bindValue(':heroname',$heroname);
$ordre->bindValue(':realname',$realname);
$ordre->bindValue(':gender',$gender);
$ordre->bindValue(':race',$race);
$res = $ordre->execute();
echo "<br>Resultat de la inserció :".$res;
$id = $bd->lastInsertId();
echo "<br>La clau del darrer heroi insertat és :".$id;
// UPDATE: modifiquem per exemple el darrer registre
$realname = 'Bruce Wayne';
$sql ="update heroes set realname=:realname where id=:codi";
$ordre = $bd->prepare($sql);
$ordre->bindValue(':codi',$id);
$ordre->bindValue(':realname',$realname);
$res = $ordre->execute();
// DELETE: esborrem darrer registre afegit
$sql ="delete from heroes where id=:codi";
$ordre = $bd->prepare($sql);
$ordre->bindValue(':codi',$codi);
$res = $ordre->execute();
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment