Как получить данные из SQLite один раз?

155
05 мая 2019, 11:50

Из базы данных получаю данные по $click_id (id товара).

Все работает корректно если в базе данных $click_id встречается один раз, что делать если в базе данных один и тот же $click_id встречается несколько раз? Сейчас выводится информация ровно столько раз, сколько одинаковых $click_id в базе.

Как вывести один раз информацию из базы, если в ней несколько одинаковых $click_id?

Мой код:

//обращение за данными по id товара
$results = $db->query("SELECT * from items WHERE item_id=$click_id");
//вывод полученной информации о товаре
while ($row = $results->fetchArray()) {
$response = preg_replace('~(<title>.*</title>(.*</head>)|(?=</head>))~si', 
$response = preg_replace('/<head([^<>]*?)>(.+?)<\/head>/is', '<head$1>
<base href="' . curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) . '">$2 
<link rel="canonical" href="http://' . $urls . '/'. $click_id .'"/>
<!-- Open Graph -->
<meta property="og:locale" content="ru, ru_RU">
<meta property="og:type" content="website" />
<meta property="og:image" content="http://site.ru/up/'. 
$row['image'] .'" />
<meta property="og:image:alt" content="' . $row['title'] . '" />
<meta property="og:title" content="' . $row['title'] . '" />
<meta property="og:url" content="http://' . $urls . '/'. $click_id .'" />
</head>', $response);
}
Answer 1

Для управления количеством записей в результирующей таблице используется оператор LIMIT. Этот оператор записывается в самом конце запроса и имеет следующую конструкцию:

SELECT ... ... ... LIMIT [offset, ] count

Тут используются два параметра:

offset - это номер строки в результирующей таблицы (от 0), от которой необходимо отсчитывать записи

count - это число, которое означает то, сколько записей из результирующей таблицы необходимо отобрать, начиная от offset.

Параметр offset не является обязательным, если его не записывать, то отсчет записей в таблице будет стартовать с нуля. Рассмотрим примеры.

SELECT * FROM student LIMIT 1; или SELECT * FROM student LIMIT 0, 1;

В Вашем случае:

"SELECT * from items WHERE item_id=$click_id LIMIT 1"
Answer 2
$results = $db->query("SELECT DISTINCT * from items WHERE item_id=$click_id");

Попробуйте с DISTINCT выполнить запрос

READ ALSO
Как удалить первое слово из переменной в SMARTY

Как удалить первое слово из переменной в SMARTY

Как добиться того, чтобы удалить ПЕРВОЕ слово из переменной в SMARTY? Для примера: Из "Привет стаковерфлоу, мне нужна помощь" в " стаковерфлоу,...

141
Удаление файлов на сервере php

Удаление файлов на сервере php

На сервере приблизительно 30 сайтом и в каждой папке файлы с мусором (вирусом), я знаю размер и название файлов(они повторяются), пробвал написать...

357
Что посоветуете как узнать какое номер присвоит база данных при добавление нового id

Что посоветуете как узнать какое номер присвоит база данных при добавление нового id

Что посоветуете, как узнать, какое номер присвоит поле id в базе данных при добавление нового idЯ добавляю новые данные из формы в таблицу, далее...

130