За последние 24 часа нас посетили 21724 программиста и 1011 роботов. Сейчас ищут 668 программистов ...

Не работает SQL запрос в цикле. Можно ли писать sql запросы в цикле?

Тема в разделе "PHP для новичков", создана пользователем crystaltrumpet, 10 фев 2019.

  1. crystaltrumpet

    crystaltrumpet Новичок

    С нами с:
    8 сен 2018
    Сообщения:
    23
    Симпатии:
    0
    Я прогоняю в цикле первую таблицу db_jobs по условиям и с нее формирую массив
    Внутри этого цикла мне нужно проверить в другой таблице db_jobs_use на количество.
    Но цикл останавливается. Я новичок поэтому и пишу в разделе для новичков.
    Кто знает правильно ли это sql запрос внутри цикла и как это правильно записать?
    PHP:
    1. $pay_job = array();
    2. $db->Query("SELECT * FROM `db_jobs` WHERE `accept` = '1' ");
    3. if($db->NumRows() == 0){
    4.   array_push($pay_job, 0);
    5. }else{
    6.   while($datas = $db->FetchArray()) {
    7.     $times_job = floor($datas['job_money']/$datas['pay']);
    8.     $for_id_j = $datas['id'];
    9.  
    10.     $db->Query("SELECT COUNT(*) FROM `db_jobs_use` WHERE `id_job` = '$for_id_j' ");
    11.     $forro = $db->FetchRow();
    12.  
    13.     $times_job = $times_job - $forro;
    14.     if ($times_job <1) {
    15.       array_push($pay_job, $datas['id']);
    16.     }
    17.   }
    18. }
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Запрос в цикле это неправильно.
     
    _ne_scaju_ нравится это.
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    @Valick конечно прав, запросы в цикле крайне нежелательны. Когда-то @Ganzal гениально объяснил, почему. Неподражаемый оригинал :)

    Но не работает у тебя не поэтому. А почему - надо смотреть, что там у тебя за $db, это явно не какой-то стандартный класс