@iSensetivity
бухгалтер, програміст-самоук

Оптимальный ли алгоритм?

Задача:

Надо сделать вставку спаршеных данных в БД.
Данные с разных страниц могут дублироваться. Если кратко то я беру массив спаршеных данных(ид) и делаю выборку идов через where in. Потом сравниваю 2 масива на наличия.
Блок-схема: images.vfl.ru/ii/1405015366/8c9bde3b/5671493.png

function select_where_in($ids, $tbl_name, $id_text){
	$pref = 'mal_';
	$string = "SELECT `$id_text`, `$pref$id_text` FROM `$tbl_name` WHERE `$pref$id_text` IN (";
	$onlyid = array();
	foreach($ids as $id){
		$string .= "$id[id], ";
		$onlyid[] = $id['id'];
	}
	$string = rtrim($string, ', ');
	$string .= ');' ;
	
	$ss = mysql_query($string);
	$num_rows = mysql_num_rows($ss);
	
	if(!empty($num_rows)){
			while ($r = mysql_fetch_row($ss)) {
				$item['id'][] = $r[0];
				$item['mal'][] = $r[1];
                }
			$result = array_diff ($onlyid, $item['mal']);
    		if(empty($result)) return 1; else return $result;
	} else {
		return 0;
	}
}


И еще один вопрос. Как получить, допустим, значение name зная id, но не зная индекса. Кроме цикла с условиями?
пример масива: images.vfl.ru/ii/1405015514/4cec0414/5671518.png
  • Вопрос задан
  • 2544 просмотра
Решения вопроса 1
valemak
@valemak
Фрилансер
Я обычно использую INSERT IGNORE, поле `ID` в таблице назначено первичным. Если запись с таким айди уже есть, то новая не вставляется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы