Created
November 8, 2020 18:16
-
-
Save rcervera/71209ff3148393c4e95aa25d1f3f75fa to your computer and use it in GitHub Desktop.
Exemples per provar sentències PDO
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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