Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 05.08.2019
Сообщений: 43
1

Как сделать запись из бд в массив

03.09.2019, 22:09. Показов 952. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, как сделать запись из бд в массив сравнивая ключи из другово массива, например есть ид продукта и количество [2=>1, 5=>1]
выводим из базы цены где ид продукта ровна ключей "2" "5", в итоги надо создать новый массив где [ключ => цена], например [2=>100,5=>250]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2019, 22:09
Ответы с готовыми решениями:

Как сделать массив с элементами типа запись
Здравствуйте,у меня есть задание: "Количество мячей, забитых и пропущенных каждой из шестнадцати...

Как сделать запись в динамический двумерный массив
что то не понимаю...на втором шаге Redim (2,2) пишет ошибку выхода из области... Option Base 1...

Как сделать запись данных из файла в массив по условию для программы тестирования?
Здравствуйте, появилась идея создать свой "тестер". В связи с этим появилось несколько вопросов,...

Как сделать запись в реестр win7 64. В реестр попадает только последняя запись
Добрый вечер! Не могу сделать запись в реестр win7 64. Microsoft.Win32.RegistryKey hklm =...

7
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
03.09.2019, 22:29 2
Цитата Сообщение от kristi14 Посмотреть сообщение
например есть ид продукта и количество [2=>1, 5=>1]
перебираем массив и из ключей, формируем новый массив $arr
далее - получаем из базы цены
PHP
1
$sql = "SELECT  id, price FROM table WHERE  id IN ('" . implode(',', $arr) . "')";
далее - перебираем выборку и формируем нужный массив
0
1 / 1 / 0
Регистрация: 05.08.2019
Сообщений: 43
03.09.2019, 23:09  [ТС] 3
fanatikus, выходит ошибка implode (): неверные аргументы переданы
PHP
1
2
3
4
5
foreach ($idproduct_decode as $idprod => $totalprod) {
$result = $mysqli->query("SELECT * FROM `product` WHERE `productid` IN ('" . implode(',', $idprod) . "')");
if (mysqli_num_rows($result) > 0){
while ($row = mysqli_fetch_array($result)){
$idprod_price = [$idprod => $row["price"]];
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
04.09.2019, 22:15 4
сначала
Цитата Сообщение от fanatikus Посмотреть сообщение
перебираем массив и из ключей, формируем новый массив $arr
а потом выборка из базы
PHP
1
2
3
4
5
6
$arr = array();
foreach ($idproduct_decode as $idprod => $totalprod) {
    $arr[] = $idprod;
}
 
$result = $mysqli->query("SELECT * FROM `product` WHERE `productid` IN ('" . implode(',', $arr) . "')");
Добавлено через 3 минуты
Цитата Сообщение от kristi14 Посмотреть сообщение
$idprod_price = [$idprod => $row["price"]];
PHP
1
2
3
4
$idprod_price = array();
while ($row = mysqli_fetch_array($result)){
    $idprod_price[$idprod] = $row["price"];
}
0
1 / 1 / 0
Регистрация: 05.08.2019
Сообщений: 43
05.09.2019, 02:14  [ТС] 5
Добавлено через 12 минут
fanatikus,
да ошибка исчезла функция сработала но не корректно на выходе {"3":"3500"}
когда у меня print_r($idproduct_decode) = Array ( [2] => 1 [3] => 1 )
то есть товар где ид 2 цена 3500, и товар где ид 3 цена 9900, на выходе должно быть {"2":3500, "3":9900}

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$result = $mysqli->query("SELECT * FROM `cartbd` WHERE `iduser` = '$userid'");
    if (mysqli_num_rows($result) > 0){
        while ($row = mysqli_fetch_array($result)){
            
$idproduct_decode = json_decode($row['idproduct'], true);
            $arr = array();
            foreach ($idproduct_decode as $idprod => $totalprod) {
                $arr[] = $idprod;
            }
            $result = $mysqli->query("SELECT * FROM `product` WHERE `productid` IN ('" . implode(',', $arr) . "')");
            if (mysqli_num_rows($result) > 0){
                $idprod_price = array();
                while ($row = mysqli_fetch_array($result)){
                    $idprod_price[$idprod] = $row["price"];
                    $idprodprice_encode = json_encode($idprod_price);
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
08.09.2019, 10:39 6
Цитата Сообщение от kristi14 Посмотреть сообщение
WHERE `productid` IN ('" . implode(',', $arr) . "')"
kristi14, Вы в конструкцию IN передаете числа? Тогда надо убрать одинарные кавычки:
PHP
1
 IN (" . implode(',', $arr) . ")
0
1931 / 1522 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
08.09.2019, 14:39 7
Цитата Сообщение от sasha0012 Посмотреть сообщение
Тогда надо убрать одинарные кавычки:
точно, протупил
0
1 / 1 / 0
Регистрация: 05.08.2019
Сообщений: 43
08.09.2019, 20:41  [ТС] 8
увы все так же не работает

Добавлено через 7 минут
на другом форуме предлагают сделать так
PHP
1
2
3
4
5
6
$idproduct_decode = json_decode($row['idproduct'], true);
$result = $mysqli->query("SELECT `productid`,`price` FROM `product` WHERE `productid` IN ('" . implode(',', array_keys($idproduct_decode)) . "')");
while ($row = mysqli_fetch_array($result,MYSQLI_NUM)){
$rezult[]=$row;
}
$idprodprice_encode = json_encode($rezult);]
результат [["2","100"]]
товар под идом 5 где то потерялся по дороге

Добавлено через 6 минут
убрала одинарные кавычки и получила то что хотела [["2","100"],["5","250"]]
PHP
1
2
3
4
5
6
$idproduct_decode = json_decode($row['idproduct'], true);
$result = $mysqli->query("SELECT `productid`,`price` FROM `product` WHERE `productid` IN (" . implode(',', array_keys($idproduct_decode)) . ")");
while ($row = mysqli_fetch_array($result,MYSQLI_NUM)){
$rezult[]=$row;
}
$idprodprice_encode = json_encode($rezult);]
0
08.09.2019, 20:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2019, 20:41
Помогаю со студенческими работами здесь

Массив: Как сделать так, чтобы результирующий массив представлял собой измененный по заданным правилам первый массив?
Доброй ночи форумчане, очередной нубо-вопрос не требует отлагательств имеется одномерный массив,...

Запись координат в массив в реал тайм, Как записать координаты в массив
Возникла проблема записи координат от мышки в массив. Мне нужно чтобы координаты сохранялись в...

Есть число 23 как его разложить как 2 и 3 и сделать такую запись 2+3=5?
Есть число n к примеру 23 как его разложить как 2 и 3 и сделать такую запись 2+3=5? Добавлено...

Php mysqli как сделать вывод из базы в массив и сделать проверку на сходство
Здравствуйте, подскажите пожалуйста как сделать что-то подобное. Есть база данных В базе таблица...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru