Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
2 / 60 / 10
Регистрация: 07.03.2019
Сообщений: 615
1

Запрос sql в цикле foreach

19.01.2021, 11:11. Просмотров 287. Ответов 5
Метки нет (Все метки)

Добрый день уважаемые программисты PHP.
Мне нужно проверить поставил ли гость ранее лайк на видео или нет.
У меня получается это узнать только сделав запрос внутри цикла, есть ли какой нибудь вариант вывести запрос в цикле но и в тоже время узнать ставлял ли лайк пользователь или нет?

вот мой скрипт
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
foreach($rv as $key) {
      if(mb_strlen($key['name']) >= 20) {
           $nt = mb_substr($key['name'],0,20);
      } else {
            $nt = $key['name'];
      }
      $yes_like = 'null';
      //делаю запрос и смотрю ставлял ли лайк на видео или нет
       if($session) {
            $v = "SELECT lik FROM video_like WHERE id_like_user = {$session} AND id_file = ".$key['idvideo']." AND id_author_file = ".$key['author']."";
            $r = $connect->select($v);
            if($r) {
                   $yes_like = $r[0]['lik'];
            }
       }
 
 
         $data[] = ['idvideo' => $key['id'], 'user' => $key['author'],'name' => $key['newname'], 'folder' => $key['folder'], 'date' => $key['date'],
                    'wiew' => $key['wiew'], 'like' => $key['lik'], 'save' => $key['save'], 'title' => $key['title'], 'session' => $session, 'yes_like' => $yes_like,
                    'avatar' => $a, 'n' => $n, 'l' => $l, 'iuser' => $id,
                    'comment' => $key['count_comment'], 'count' => $count,'namevideo' => $nt];
}
return $data;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2021, 11:11
Ответы с готовыми решениями:

Цикл foreach и sql запрос
$sql .= "$k = '$v'"; Проблема в том что цикл проходит, и все нормально, пока $v не становится...

Ошибка в цикле foreach
всем доброго времени,идея такова есть скажем в одном текстбоксе h(4) и мне нужно что бы в итоге в...

Parallel.ForEach в цикле
Добрый день. Возникла проблема с написанием небольшого WPF приложения. В C# новичок и с потоками...

Ошибка в цикле foreach
Добрый день, уважаемые форумчане. Помогите, пожалуйста, разобраться с ошибкой в строке 46...

5
555 / 414 / 151
Регистрация: 26.05.2016
Сообщений: 2,342
19.01.2021, 11:35 2
Цитата Сообщение от server_net Посмотреть сообщение
Запрос sql в цикле foreach
ну за это можно и прибить. Лучше делайте выборку и на стороне php разбирайте массив/объект, чтобы не насиловать sql сервер.
1
2 / 60 / 10
Регистрация: 07.03.2019
Сообщений: 615
22.01.2021, 16:00  [ТС] 3
atanov, Ну а как сделать скажите пожалуйста, исправьте прошу мой код
0
555 / 414 / 151
Регистрация: 26.05.2016
Сообщений: 2,342
22.01.2021, 21:35 4
Цитата Сообщение от server_net Посмотреть сообщение
Ну а как сделать скажите пожалуйста, исправьте прошу мой код
во первый, что из себя представляет массив $rv, который перебираете?
Во-вторых, структура бд, хотя бы в части как лайки выставляются и учитываются.
В-третьих, для чего используется функция mb_strlen?
1
2 / 60 / 10
Регистрация: 07.03.2019
Сообщений: 615
23.01.2021, 10:05  [ТС] 5
Цитата Сообщение от atanov Посмотреть сообщение
что из себя представляет массив $rv, который перебираете?
Оно выбирает первые 10 видео и все его данные

Цитата Сообщение от atanov Посмотреть сообщение
Во-вторых, структура бд, хотя бы в части как лайки выставляются и учитываются.
Данные видео хранятся отдельно и лайки тоже отдельно в лайках записывает id видео и author_id то есть автор кто добавил видео и session тот кто поставил лайк lik=1 лайк есть lik=0 лайка нет

Цитата Сообщение от atanov Посмотреть сообщение
В-третьих, для чего используется функция mb_strlen?
Используется для название видео
0
555 / 414 / 151
Регистрация: 26.05.2016
Сообщений: 2,342
23.01.2021, 12:14 6
server_net, ну я бы так сделал:
1. массив не перебираем.
2. выборку 10 первых видео получаем в виде массива -
SQL
1
SELECT `id`, ... FROM ...//таблица где видео
3. делаем массив видео id -
PHP
1
$array_video_id = array_column($array_bd, 'id');
4. из таблицы где лайки выбираете нужные записи:
PHP
1
$string_video_id = implode(',', $array_video_id);
SQL
1
SELECT `id видео`, `author_id`, `lik` FROM ...//таблица где лайки WHERE `id видео` IN({$string_video_id})
5. в последней выборке можете отсеять с помощью array_map лайки = 1 и = 0, или просто перебором.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2021, 12:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка в цикле foreach
Помогите найти ошибку в цикле, говорит,то что неверный аргумент <!DOCTYPE html> <html...

Многопоточность в цикле foreach
Здравствуйте, как можно реализовать многопоточность в foreach? Я знаю что есть Parallel.ForEach, но...

For в foreach (цикл в цикле)
Здравствуйте! Сегодня вдруг решил, что пора оптимизировать код и прибегнуть к циклам в циклах....

Ошибка в цикле foreach
Привет. <tbody> <?foreach($products as $product => $cost):?> <tr> ...

Использование ListBox в цикле foreach
Здравствуйте уважаемые Гуру! Нужен ваш совет Есть цикл foreach, в котором перебираются строки...

Пополнение строки в цикле foreach
Маленький вопрос. Нужно сформировать строку из массива. Что-то типа этого: foreach(string book...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.