Два види запитів 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'];
далі ✏