Exempel på PHP PDO connection och queries


<?php header('Content-type: text/plain; charset=utf-8'); // vi definierar konstanter (så lär vi oss det) för att ansluta till vår databas "register" define('DB_CONSTRING','mysql:host=localhost;dbname=register'); define('DB_USER', 'root'); define('DB_PASS', ''); // PDO kräver felhantering med try-catch vid anslutning. try{ // anslut $db = new PDO(DB_CONSTRING, DB_USER, DB_PASS); // set errormode (här kan vi välja annan felhantering om vi vill) $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // vi ser till att vi MySQL använder UTF-8 vid läsning av queries (betänk "SELECT * FROM table WHERE namn = 'Östen'") $db->exec("SET CHARACTER SET utf8"); // om något går fel i anslutningen }catch(PDOException $e) { // fångar vi felet här, och kan skriva ut info om vi vill echo $e->getMessage(); exit(); } // 1. Ett query utan variabler, behöver inte vara ett prepared statement $statement = $db->query("SELECT * FROM persons"); $statement->execute(); // hämta ALLA rader som associativ array $results = $statement->fetchAll(PDO::FETCH_ASSOC); // notera hur resultatet ser ut (en array med rader av arrayer med kolumner) print("\n".'-- 1. en array med rader av arrayer med kolumner:'."\n\n"); var_dump($results); // 2. Alternativt (hämtar data som objekt) $statement = $db->query("SELECT * FROM persons"); $statement->execute(); // hämta ALLA rader som objekt $results = $statement->fetchAll(PDO::FETCH_OBJ); // notera hur resultatet ser (en array med rader av objekt med kolumner) print("\n".'-- 2. en array med rader av objekt med kolumner:'."\n\n"); var_dump($results); // 3. Nu ett query med en variabel, behöver vara ett prepared statement för att säkra att variablen inte innehåller "farlig" data $id = $_GET['id']; // notera id = :id där :id är en placeholder för data $statement = $db->prepare("SELECT * FROM persons WHERE id = :id"); // data för placeholdern skickas in i execute $statement->execute(array('id' => $id)); // vi hämtar EN rad data (från ett id) så vi använder fetch istället för fetchAll $results = $statement->fetch(PDO::FETCH_ASSOC); // notera hur resultatet ser ut (en array med kolumner) print("\n".'-- 3. en array med kolumner:'."\n\n"); var_dump($results); // 4. Alternativt, en rad som ett objekt $statement = $db->prepare("SELECT * FROM persons WHERE id = :id"); $statement->execute(array('id' => $id)); $results = $statement->fetch(PDO::FETCH_OBJ); // notera hur resultatet ser ut (ett objekt med kolumner) print("\n".'-- 4. ett objekt med kolumner:'."\n\n"); var_dump($results); if(isset($_GET['firstname']) && isset($_GET['lastname']) && isset($_GET['email'])){ // 5. Ett INSERT query (med data in) $statement = $db->prepare("INSERT INTO persons SET firstname = :firstname, lastname = :lastname, email = :email"); // tilldelningen till $result är inte nödvändig, men om vi vill veta om resultatet blev lyckat (bool true) får vi göra så.. $result = $statement->execute( array( 'firstname' => $_GET['firstname'], 'lastname' => $_GET['lastname'], 'email' => $_GET['email'] ) ); // ..för att kunna se det här print("\n".'-- 5. resultatet av en insert:'."\n\n"); var_dump($result); // 6. Ett extra INSERT query (till en relationstabell, där data in är id:t som förra queriet skapade (+ ett fingerat companyId )) $personId = $db->lastInsertId(); $statement = $db->prepare("INSERT INTO personsXcompanies SET personId = :personId, companyId = :companyId"); $statement->execute(array('personId' => $personId, 'companyId' => 1)); } // SELECT * WHERE IN [array]
0 votes