@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
  • Вопрос задан
  • 2543 просмотра
Решения вопроса 1
valemak
@valemak
Фрилансер
Я обычно использую INSERT IGNORE, поле `ID` в таблице назначено первичным. Если запись с таким айди уже есть, то новая не вставляется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 ₽
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
Farpost Владивосток
от 100 000 до 160 000 ₽
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект