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 вещи:
- Нормально соединиться, а не одной строчкой
- Заменить все переменные в запросе на знаки вопроса
- Подготовить запрос с помощью prepare()
- И выполнить его, передав переменные в 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() - массив строк, причем формат этого массива может быть разным