Два види запитів 1) прямий - query() та 2) підготовлений prepare() та execute()
<?php /* підключення до БД - можна в окремому файлі require('connectdb.php');*/ $host = 'localhost'; $db = 'myphpschool'; $user = 'admin'; $pass = '1111'; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $pdo = new PDO($dsn, $user, $pass); /* ============*/ $sql ="SELECT * FROM weapons"; $stmt = $pdo->prepare($sql); $stmt->execute(); echo "<table><tr><th>Id</th><th>Тип</th><th>Фото</th></tr>"; while ($row = $stmt->fetch(PDO::FETCH_LAZY)) { // три види запису виведення даних echo "<tr><td>".$row[0]."</td><td>".$row->type."</td><td>".$row["photo"]."</td></tr>"; } echo "</table>"; $pdo=null; ?>
Id | Тип | Фото |
---|---|---|
1 | ACR | |
2 | M4 |
query()
Якщо в запит не передаються змінні, то можна скористатись функцією query()
$stmt = $pdo->query('SELECT type FROM weapons'); while ($row = $stmt->fetch()) { echo $row['name'] . "\n"; }
ACR
M4
prepare() та execute()
Якщо в запит передається хоч одна змінна, то він обов'язково повинен виконуватись тільки через підготовленні вирази. Ці вирази - звичайний SQL запит, у якому ставиться спеціальній маркер - плейсхолдер PDO підтримує позиційні плейсхолдери - "?", для яких важливий порядок змінних, що передаються та іменовані плейсхолдери - ":name" для яких порядок не важливий.
? - позиційні плейсхолдери
Приклад (передаємо одну змінну - ціле число PDO::PARAM_INT )$id = 1; $stmt = $pdo->prepare('SELECT type,photo FROM weapons WHERE id = ?'); $stmt->bindValue(1, $id, PDO::PARAM_INT); $stmt->execute(); $row = $stmt->fetch(); echo $row ['type']."\n".$row ['photo'];
ACR
Приклад (передаємо дві змінні - рядкову PDO::PARAM_STR та числову PDO::PARAM_INT )
Важливий порядок змінних в запиті, перший знак "?" - перша змінна і т.д.
$id=2; $type = "M4"; $stmt = $pdo->prepare('SELECT photo FROM weapons WHERE type = ? and id = ?'); $stmt->bindValue(1, $type, PDO::PARAM_STR); $stmt->bindValue(2, $id, PDO::PARAM_INT); $stmt->execute(); $row = $stmt->fetch(); echo $type."\n". $row ['photo'];
M4
:name - іменовані плейсхолдери
Приклад (передаємо одну змінну)$id = 2; $stmt = $pdo->prepare('SELECT type FROM weapons WHERE id = :id'); $stmt->execute(array('id' => $id)); $row = $stmt->fetch(); echo $row ['type'];
M4
Приклад (передаємо кілька змінних, порядок не важливий)
$type = "M4"; $id = 2; $stmt = $pdo->prepare('SELECT photo FROM weapons WHERE type= :type and id = :id'); $stmt->execute(array('id' => $id,'type' => $type)); $row = $stmt->fetch(); echo $row ['photo'];
далі ✏