Запрос в базу на получение записи по id

244
11 января 2018, 19:40

Помогите составить корректный запрос в базу что бы можно было получать каждую запись по id, как single page.

$id = isset($_GET['id']) ? $_GET['id'] : die('ERROR: missing ID.');
include_once 'DB/database.php';
include_once 'Objects/dvd.php';
$database = new Database();
$db = $database->getConnection();
$dvdList = [];
$stmt = $db->query('SELECT * FROM dvd WHERE id = ' ); 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$dvdList[$row['id']] = new Dvd($row);
}
foreach ($dvdList as $dvd) {
echo "<h3 class='product-title'>{$dvd->name}</h3>";
echo "<p class='product-description'>{$dvd->description}</p>";
echo "<h6 class='price'>Price: {$dvd->price}<i class='glyphicon-euro'></i></h6>";
echo "<h6 class='sizes'>Capacity: {$dvd->capacity} mb </h6>";
}

Если писать после id = просто цифру то запись получается из базу, как корректно составить что бы получать по id

До этого в классе Objects/dvd.php был метод ` function readOne(){

    $query = "SELECT scu, name, img, price, description, capacity FROM dvd
        WHERE id = ? LIMIT 0,1";
    $stmt = $this->conn->prepare( $query );
    $stmt->bindParam(1, $this->id);
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    //data that will be executed in `dvd_id`
    $this->scu = $row['scu'];
    $this->name = $row['name'];
    $this->img = $row['img'];
    $this->description = $row['description'];
    $this->price = $row['price'];
    $this->capacity = $row['capacity'];
}

Так получил запись по ключу, сейчас переделываю проект больше под ооп, создал абстрактный класс родителя Objects.product.php

abstract class Product
{
public $id;
public $scu;
public $img;
public $name;
public $price;
public $description;
public function __construct($data)
{
    // $data - это строка извлеченная из БД.
    // Соответственно индексы - это имена полей в таблице
    $this->id    = $data['id'];
    $this->img   = $data['img'];
    $this->scu   = $data['scu'];
    $this->name  = $data['name'];
    $this->price = $data['price'];
    $this->description = $data['description'];
}

}

Answer 1

1. Нет необходимости использовать LIMIT при запросе одной записи по id .

2. Проверьте, получаете ли вы значение id через $this->id.

3. Используйте такие варианты подстановки значений:

$query = "SELECT scu, name, img, price, description, capacity FROM dvd
    WHERE id = ?";
$stmt->bindParam("i", $this->id);
$query = "SELECT scu, name, img, price, description, capacity FROM dvd
    WHERE id = :id";
$sth->bindParam(":id", $this->id, PDO::PARAM_INT);

PDOStatement::bindParam

PDO::PARAM_INT

READ ALSO
обратный отсчет на сервере с привязкой к БД и выводом на сайт

обратный отсчет на сервере с привязкой к БД и выводом на сайт

Ребята, всем привет, подскажите куда копать или помогите кодом, мне нужен счетчик времени – обратный отчет, и вывод всего этого дела на сайтВсе...

184
Число из массива в переменную Mysql

Число из массива в переменную Mysql

ЗдравствуйтеПытаюсь из mysql вывести максимальное значение

223
mysql WHERE один столбец IN (SELECT два столбца)

mysql WHERE один столбец IN (SELECT два столбца)

Всем привет! Сейчас изучаю sql, столкнулся с проблемойЕсть 3 таблицы:

221