"PHP" / Говнокод #716 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
$max_Id_sql = mysql_query ( "SELECT max(obj_id) FROM objs" );	//obj_id в БД примерно такие: 1, 2, ..., 70, 80, 124, 4101, 4162, 4931
$row = mysql_fetch_row ( $max_Id_sql );
for($i = 0; $i <= $row [0]; $i ++) {			//здесь получаем 4932 прохода, из них нам нужны не более 80 штук
	if (array_key_exists ( $i, $sizes )) {		//массив sizes содержит от 1 до 80 элементов 
		if ($sizes [$i]) {			//видимо, автор не знал про foreach
			...
			$result = mysql_query ( "SELECT obj_name,obj_size,obj_parent FROM objs WHERE obj_id='$i'" );
			//Для каждого $i выполняется отдельный SQL-запрос. Хорошо хоть, что он не 4932 раза выполняется в этом цикле
			$objArray = mysql_fetch_array ( $result );
			...
		}
	}
}

Комментарии мои.
Код - неизвестного программиста, работавшего до меня.

Запостил: guest guest, (Updated )

Комментарии (3) RSS

  • Darquan0:
    шедевр.
    просто "SELECT ... FROM objs ORDER BY obj_id" это не для нас...
    Ответить
  • dead_star:
    если в $sizes не может содержать значения с ключом больше чем max(obj_id) то выполнение первого запроса вообще ненужно

    в ином случае можно рассмотреть вариант всего с 2 SQL запросами
    $max_sql = mysql_query("SELECT max(obj_id) FROM objs");
    list($max) = mysql_fetch_row($max_sql);
    ksort($sizes);
    $select = array();
    foreach ($sizes as $id=>$size){
     if ($id>$max) break;
     if ($size) $select[] = "obj_id=".intval($id);
    }
    if (count($select)){
     mysql_query("SELECT obj_name, obj_size, obj_parent FROM objs WHERE ".implode(" OR ", $select));
    }
    Ответить
  • Нет, главное к подружкам своим, таким же потаскушкам, она меня не ревновала, к проституткам каких иногда приводил прямо домой, в те дни, когда она была «занята» – тоже, а тут, к матери родной ревнует!
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8