Hej,
Jeg forsøger at blive bedre i PHP og arbejder med den object orienteret del for at få en bedre forståelse af, hvordan større frameworks virker.
Jeg synes det er meget svært at finde gode tutorials på det område. Det der gør det mere svært er, folk gør det jo på så mange forskellige måder når det kommer til OOP, at hvis man ikke holder sig til et bestemt design pattern, så bliver man meget hurtigt forvirret. Jeg har kigget lidt på Laravel, codeigniter, cakePHP, slim og forsøgt at bygge en simpel CRUD i OOP, men igen, jeg er stået lidt fast i hvilken vej jeg vil gå.
Jeg synes det sjoveste er at bygge ting for bunden, for så ved man hvordan det virker. I hvert fald til at starte med. Derfor har jeg forsøgt at google nogen tutorials, men det er ikke meget jeg kan finde på området, der giver en overordnet forståelse. Det er som om man skal tag lidt at hvert og danne sit eget.
jeg er småt begynd at følge en tutorial på youtube, hvor man opbygger et website med login og fuld CRUD for at blive en smule kloger på området.
Mange steder i video'en laver personen i videoen en insert, som failer for mig. Jeg har en fornemmelse om, at det er min id felt den er galt med, og når jeg slår PDO insert op eller andre videoer, virker det ikke som om, man behøver at definer den id i ens sql. Håber nogen kan gøre mig kloger på området. herunder ses fejl koden og klasseopbygning + insert
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\'\', 'testuser', '' at line 40
- DB::query("INSERT INTO users VALUES (\'\', :username, :password, :email)",
- array(
- ':username'=>$username,
- ':password'=>password_hash($password, PASSWORD_BCRYPT),
- ':email'=>$email
- )
- );
og her er DB classen der bliver brugt
- class DB
- {
-
- private static function connect(){
- try {
- $pdo = new PDO('mysql:host=127.0.0.1;dbname=pdo_test;charset=utf8', 'root', '');
- $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- return $pdo;
- } catch (PDOException $e){
- $error = 'connection failed: ' . $e->getMessage();
- }
-
- }
- public static function query($query, $params = array()){
- $statement = self::connect()->prepare($query);
- $statement->execute($params);
-
- // if the first word is select in the query
- if (explode(' ', $query)[0] == 'SELECT') {
- //fetch data and return it
- $data = $statement->fetchAll();
- return $data;
- }
-
- public static function lastqueryId(){
- return self::connect()->lastInsertId();
- }
- }
-
- }
Så mine spørgsmål er:
1. Hvordan kan jeg blive bedre til OOP/PDO/PHP/MVC/design patterns
2. Har i nogen gode bøger/videoer i har set, som i kan dele ?
3. Hvordan løser jeg mit ID problem og hvordan kan det være jeg får fejl, når personen i videoen har præcis samme kode som mig ?
4. Hvordan fanden debugger man i PDO, jeg kunne altid spotte min fejl i Mysqli, men synes jeg ikke rigtig jeg får noget hjælp af mit program, til at kunne løse problemet.
5. Hvis i skulle bruge overstående kode til at få last inserted id, hvordan vil i så løse det ? for jeg har forsøgt i nogen dage nu. Jeg forsøgte at oprette en metode der hed lastqueryId() som også kan ses i koden overfor, men uden held. Det var i dette øjeblik jeg begynde at tvivle på, om det var den rigtig måde at opbygge en klasse på.
Synes det er på tide for mig at komme videre med OOP
På forhånd tak.
Indlæg senest redigeret d. 08.09.2017 00:24 af Bruger #21207