Open JeroenHeemskerk opened 1 year ago
Sterker nog, het opbouwen van een connectie, het preparen, het bind-den en het executen kan nu zo hetzelfde worden dat je het in een eigen functie kan zetten (mits je de $conn een class property maakt):
private function prepareBindAndExecute() {
$this -> connection();
$stmt = $this -> conn -> prepare($sql);
foreach($params as $key => $value){
$stmt -> bindParam(":".$key, $value);
}
$stmt -> setFetchMode(PDO::FETCH_OBJ);
$stmt -> execute();
return $stmt;
}
De public functies in CRUD worden nu:
public function createrow($sql, $params){
$this->prepareBindAndExecute($sql, $params);
return $this->conn->lastInsertId();
}
public function readOneRow($sql, $params=[]){
$stmt = $this->prepareBindAndExecute($sql, $params);
return $stmt -> fetch();
}
public function readMultipleRows($sql, $params=[]){
$stmt = $this->prepareBindAndExecute($sql, $params);
return $stmt -> fetchAll();
}
public function updaterow($sql, $params){
$this->prepareBindAndExecute($sql, $params);
}
public function deleterow($sql, $params){
$this->prepareBindAndExecute($sql, $params);
}
In onderstaande code wordt steeds een aantal ":sleutel" waarden gegeven en daarna in dezelfde volgoorde de values https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/usercrud.php#L13 https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/usercrud.php#L23 https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/usercrud.php#L33 https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/usercrud.php#L43 https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/shopcrud.php#L13 https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/shopcrud.php#L23 https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/shopcrud.php#L54
Hier mixen we sleutels en values in dezefde array, dit is niet correct, ook is er een onuitgesproken verbinding tussen de eerste helft aan values in de array naar de tweede serie aan values.
Beter is het om associatieve arrays te gebruiken (en ook de : laten vervallen voor de sleutels)
Dit maakt onderstaande code in de CRUD veel eenvoudiger: https://github.com/Stijn121/educom-webshop-oop-1693492209/blob/47b4e585cb2f9121d6418c19191c6b69b646a0d1/models/crud.php#L13-L24 wordt dan