Защо не издържа if проверката при foreach?!?

Msecurity

Registered
Ето ми го кода...
Целта е следната : проверява за дадено ID в таблицата ако съществува нищо , ако не съществува пуска заявка insert...
Ето го кода:
PHP:
$wins = mysql_query("SELECT a.id, a.statut, b.id, b.tour_id, c.proj_id, COUNT(composition) as c_composition, SUM(composition) as total_composition, COUNT(design) as c_design, SUM(design) as total_design, COUNT(work) as c_work, SUM(work) as total_work, COUNT(total) as c_total, SUM(total) as total_total, c.accept, d.tours_id
FROM vt_tours as a, vt_toursproj as b,  vt_prjvotes as c, vt_tour_result as d WHERE a.id=b.tour_id AND b.id=c.proj_id AND c.accept='1' AND a.statut='3' GROUP BY c.proj_id")
 or die("<br /> Грешка при извличане на конкурсите: (" . mysql_errno() . ") " . mysql_error());
	while($s = mysql_fetch_array($wins)) {
$tour_id['a'] = $s['tour_id'];
$proj_id['a'] = $s['proj_id'];
$checkresult = "SELECT * FROM vt_tour_result WHERE  tours_id = '".$tour_id."'";
$chkresult = mysql_query($checkresult) or die(mysql_error());
if(mysql_num_rows($chkresult)) { echo "Информацията е ъпдейтната";}	 
else { 
        $avcomposition['a'] = $s['total_composition'] / $s['c_composition'];
	$avdesign['a'] = $s['total_design'] / $s['c_design'];
	$avwork['a'] = $s['total_work'] / $s['c_work'];
	$avtotal['a'] = $s['total_total'] / $s['c_total'];
echo "<br />Конкурс ".$s['tour_id']." Проект: ".$s['proj_id']." Композиция: ".$avcomposition." Дизайн: ".$avdesign." Изработка: ".$avwork." Общо: ".$avtotal." ";

foreach($tour_id as $a=>$b)  
{  
$inserts = mysql_query("INSERT INTO vt_tour_result (id, tours_id, proj_id, av_composition, av_design, av_work, av_total, av_accept)
VALUES ('', '$tour_id[a]', '$proj_id[a]', '$avcomposition[a]', '$avdesign[a]', '$avwork[a]', '$avtotal[a]', '1')")
or die(mysql_error());  
echo "1 добавен запис!";  }
}
}

Но проблема е че когато заявката е по този начин
PHP:
$checkresult = "SELECT * FROM vt_tour_result WHERE  tours_id = '".$tour_id."'";
Прави си проверката и отново ънсерт... все едно такова ID няма , а дефакто още след първата проверка ID-то вече е добавено и то неведнъж...
Ако заявката е по този начин:
PHP:
$checkresult = "SELECT * FROM vt_tour_result WHERE  tours_id = '".$tour_id['a']."'";
Добавя само последният запис - не използва foreach...
Някои ако ми даде логично обяснение за това и сподели как трябва да стане ще съм му много благодарен :)
Лека и мека на всички :)
 
Msecurity каза:
Целта е следната : проверява за дадено ID в таблицата ако съществува нищо , ако не съществува пуска заявка insert...
...
Някои ако ми даде логично обяснение за това и сподели как трябва да стане ще съм му много благодарен :)
Прочети за INSERT IGNORE :)
 
ако съм разбрал както трябва използвай ето това

INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

или виж тук
 
Погледнах.. но нищо не става...
Ето ми я сега заявката:
Код:
$inserts = "INSERT INTO vt_tour_result VALUES (id='', tours_id='$tour_id[a]', proj_id='$proj_id[a]', av_composition='$avcomposition[a]', av_design='$avdesign[a]', av_work='$avwork[a]', av_total='$avtotal[a]', av_accept='1') ON DUPLICATE KEY UPDATE proj_id='$proj_id'"
or die(mysql_error());
Но сега дори не изпълнява зявката, а грешки не ми дава...
 
Оправих се с малко по подробно четене благодарение на @koko5
Ето как стана заявката:
Код:
$inserts = mysql_query("INSERT INTO vt_tour_result (id, tours_id, proj_id, av_composition, av_design, av_work, av_total, av_accept)
VALUES ('', '$tour_id[a]', ('$proj_id[a]'), '$avcomposition[a]', '$avdesign[a]', '$avwork[a]', '$avtotal[a]', '1') ON DUPLICATE KEY UPDATE proj_id='$proj_id'");

+1 @koko5
 

Back
Горе