PHP PDO Представить обычный запрос в виде подготовленного

Срочно требуется небольшая помощь, есть код

$dbh = new PDO($dsn,$user,$pass);

$date = $_GET["date"];

$datestart = "SELECT DISTINCT game.ID_Game , game.date , game.place , game.score FROM game WHERE game.date > '". $date ."'";

foreach ($dbh->query($datestart) as $row) {
    echo $row['ID_Game'];
    echo " ";
    echo $row['date'];
    echo " ";
    echo $row['place'];
    echo " ";
    echo $row['score'];
    echo "<br>";
}

Нужно переделать обычный запрос под подготовленное выражение с сохранением функционала. Большое спасибо!


Ответы (1 шт):

Автор решения: Ипатьев

Чтобы представить обычный запрос в виде подготовленного, надо сделать 4 вещи:

  1. Нормально соединиться, а не одной строчкой
  2. Заменить все переменные в запросе на знаки вопроса
  3. Подготовить запрос с помощью prepare()
  4. И выполнить его, передав переменные в execute() в виде массива

то есть так:

<?php

require 'pdo.php';

$sql = "SELECT ID_Game, date, place, score FROM game WHERE game.date > ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_GET["date"]]);
foreach ($stmt as $row) {
    echo $row['ID_Game'];
}

в итоге получится тот же самый стейтмент, который был у тебя в результате предыдущего запроса, который модно либо перебирать с помощью foreach, либо из которого можно либо фетчить результат с помощью

  • fetchColumn() - получить одну ячейку, удобно для запросов count(*)
  • fetch() - одну строку
  • fetchAll() - массив строк, причем формат этого массива может быть разным
→ Ссылка