За последние 24 часа нас посетили 16523 программиста и 1678 роботов. Сейчас ищет 861 программист ...

Построение запроса к БД используя массивы

Тема в разделе "MySQL", создана пользователем fork, 17 июл 2015.

  1. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Всем привет!
    Не могу правильно составить запрос:
    Код (PHP):
    1. $array1 = (1, 2, ...)
    2. $array2 = (1, 5, ...)
    3.  
    4. //запрос нужен примерно такой:
    5.  
    6. $sql = "UPDATE `{$table}` SET `quantity` = '{$array1[]}' WHERE  `order_id`='{$array2[]}'";
    7.  
    Помогите, пожалуйста?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    что за идиотодебилизм?
    ты когда пишешь $array1[] что ты хочешь увидеть?
     
  3. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Ну вообще-то я так не пишу, я написал для понимания, что хочу увидеть на месте $array1[] - $array1[0], потом $array1[1] и так далее..
    и с запросом немного ошибся, такой должен быть:
    Код (PHP):
    1. $sql = "UPDATE `{$table}` SET `quantity` = '{$array1[]}' WHERE  `order_id`='{$order_id}' AND `product_id`='{$array2[]}'";
    2.  
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    а оно должно так работать?

    Добавлено спустя 53 секунды:
    а ну ка тест:
    Код (PHP):
    1. $arr = array('one', 'two', 'three');
    2.  
    3. for ($i = 0; $i < count($arr); $i++)
    4. {
    5.     echo "<div>".$arr[]."</div>";
    6. } 
    Добавлено спустя 1 минуту 33 секунды:
    и сразу такой конструкция затестируй:
    Код (PHP):
    1. $arr = array();
    2.  
    3. $arr[] = 'one';
    4. $arr[] = 'two';
    5. $arr[] = 'three';
    6.  
    7. var_dump($arr);
    Добавлено спустя 38 секунд:
    может тогда поймешь что происходит при вот таком действии: $array1[]
     
  5. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Может вы лучше прочитаете какой у меня был вопрос?? - НЕ МОГУ СОСТАВИТЬ ЗАПРОС - это означает, что мой запрос, указанный выше не верен!! что вы мне тут доказываете? может на словах понятнее будет - есть два массива, нужно составить запрос или запросы в бд используя каждые значения этих двух массивов.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  7. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    denis01 читал, понятно. Но на свой вопрос ответ не нашёл.

    Добавлено спустя 2 минуты 17 секунд:
    У меня не возникло бы проблем, если был только один массив, запросил бы через foreach, а два не знаю как делать.
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    может ты наконец начнешь думать своей пустой коробкой, которую ты по ошибке называешь головой и наконец поймешь что запись типа:
    Код (PHP):
    1. $sql = "{$array1[]}"; 
    выдаст ошибку, потому что обращаться к массиву так надо совсем в другом случае, и этот другой случай я привел выше.

    и может ты в свой говнокод вставишь в конец вот такую волшебную конструкцию:
    Код (PHP):
    1. echo $sql; 
    что бы увидеть что ты собираешь отправлять в БД.

    есть компьютер, надо составить запрос в БД, составишь?
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Составь запрос вручную и покажи как ты хочешь чтобы он выглядел, ну и покажи нам полные массивы с данными которые ты использовал для построения запроса.

    Ну и ещё, у тебя сложности с текстом запроса или с формированием запроса на PHP?
     
  10. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    VLK Ну ок, раз тут так принято, Слышь идиотина, если ты тупой и не понимаешь, что мой запрос выглядит иначе и не можешь образно мыслить, грошь тебе цена. Да ещё если ты сам не догнал, с хера ли ты позволяешь себе оскорблять людей??

    еслиб был один массив сделал бы так:

    Код (PHP):
    1. $array =(1,1,3,5);
    2. sql ="";
    3.  
    4. foreach ($array as $arr) {
    5.          $sql .= "UPDATE `$table` SET `quantity` = '$arr';
    6. }
    Но у меня 2 массива, прошу помощи.

    Добавлено спустя 6 минут 51 секунду:
    denis01 У меня сложности с формированием запроса в php.
    запрос должен быть такой:
    Код (PHP):
    1. UPDATE `$table` SET `quantity` = '$numb' WHERE  `order_id`='$order_numb' AND `order_product_id`='$order_product_id'
    Значения $numb и $order_product_id находятся в двух массивах, как их грамотно подставить в запрос?
     
  11. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    если у тебя массив с одинаковым кол-ом элементов, то можешь попробовать как-то так (меня особо не слушай):
    Код (PHP):
    1. $array1 = (1, 2, ...)
    2. $array2 = (1, 5, ...)
    3.  
    4. for ($i = 0; $i <= count ($array1); $i++) {
    5. $sql = "UPDATE `$table` SET `quantity` = '$array1[$i]' WHERE  `order_id`='$array2[$i]'";
    6.  
    7. }
    8.  
    сложный(фигурный) синтаксис, насколько я знаю, используется для ограничения имён переменных и т.п., по крайней мере - я так понимаю его.
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  13. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Да, с одинаковым кол-вом, попробую, спасибо!
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    fork а с помощью каких классов ты делаешь запрос к базе данных?

    Код (PHP):
    1. UPDATE `$table` SET `quantity` = '{$array[1]}' WHERE  `order_id`='{$array2[1]}' AND `order_product_id`='{$array2[1]}' 
     
  15. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    через PDO
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  17. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    А я ни кого не оскорблял, я написал то что есть, о каких запросах в БД идет речь, если ты не знаешь о существовании цикла for? и зачем мне понимать, возьми и напиши что реальный запрос выглядит по другому, тут вроде как должны помогать, а не ребусы отгадывать, что там у тебя и где.

    И если кто то не может понять, а тут ни кто не понял с первого, ни со второго раза что за хрень надо сделать, это исключительно твои недоработки.
     
  18. fork

    fork Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    VLK Ну тогда я тоже никого не оскорблял, а написал как есть.
    iNEEdhLw Спасибо, помогло.
     
  19. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Подскажу трюк, который при определенном раскладе может делать массовый UPDATE в один запрос:

    Код (PHP):
    1. INSERT INTO footable(id, barfield) VALUES
    2.   (1, 'new ololo'),
    3.   (2, 'new pyshpysh'),
    4.   (3, 'new djagadjaga')
    5. ON DUPLICATE KEY UPDATE 
    6.   barfield = VALUES(barfield)
    Использовать с осторожностью! :) Только если понимаешь что происходит.