Hallo Allemaal,

Ik probeer een update uit te voeren aan de hand van een foreach.

Dit zijn de query's (ge-echo'd) die ik uitvoer:

UPDATE ST_FAR SET amount='625' WHERE ean='8711173001887'
UPDATE ST_FAR SET amount='2836' WHERE ean='8712400110136'
UPDATE ST_FAR SET amount='595' WHERE ean='8712400111119'
UPDATE ST_FAR SET amount='284' WHERE ean='8711173002020'
UPDATE ST_FAR SET amount='135' WHERE ean='8712400110044'
UPDATE ST_FAR SET amount='2891' WHERE ean='8712400110037'
UPDATE ST_FAR SET amount='75' WHERE ean='8712400111096'
UPDATE ST_FAR SET amount='2059' WHERE ean='8712400110020'
UPDATE ST_FAR SET amount='0' WHERE ean='8716677005768'
UPDATE ST_FAR SET amount='133' WHERE ean='8716677005751'
UPDATE ST_FAR SET amount='39' WHERE ean='8716677005744'
UPDATE ST_FAR SET amount='457' WHERE ean='8711173001894'
UPDATE ST_FAR SET amount='518' WHERE ean='8711173001870'
UPDATE ST_FAR SET amount='3' WHERE ean='8712400110136'
UPDATE ST_FAR SET amount='2' WHERE ean='8712400110020'
UPDATE ST_FAR SET amount='1' WHERE ean='8712400110044'
UPDATE ST_FAR SET amount='3' WHERE ean='8711173001887'
UPDATE ST_FAR SET amount='5' WHERE ean='8711173001870'
UPDATE ST_FAR SET amount='1' WHERE ean='8712400110037'


Nu werkt het grootste deel van deze query's wel. Alleen sommige niet.
Bij

UPDATE ST_FAR SET amount='625' WHERE ean='8711173001887'
komt er bijvoorbeeld in de database '3' te staan. Netals bij

UPDATE ST_FAR SET amount='2059' WHERE ean='8712400110020'
2 komt. Terwijl

UPDATE ST_FAR SET amount='595' WHERE ean='8712400111119'
wel gewoon correct werkt.
Maar

UPDATE ST_FAR SET amount='135' WHERE ean='8712400110044'

Weer niet.

Ik heb al gekeken in mijn database, het staat nu als INT(11). Wijzigen naar varchar werkt niet.
Via andere hosting geprobeerd maar alsnog hetzelfde probleem.
Als ik echter de foreach weghaal en in elke query handmatig '2059' zet, werkt het wel.

Iemand enig idee hoe dit kan komen?


function updateStock($ean, $amount, $stock, $name){
	if(p($stock.'.stocks.import')){
		$st = 'ST_'.$stock;
		$query = mysql_query("SELECT * FROM {$st} WHERE ean='{$ean}' LIMIT 1");
		if (mysql_num_rows($query)!=0) {
			$query = "UPDATE {$st} SET amount='{$amount}' WHERE ean='{$ean}'";
			mysql_query($query);
			echo $query;
		} else {
			$query3 = mysql_query("INSERT INTO {$st} (ean, amount, name)
					VALUES ('".$ean."','".$amount."','".$name."')");	
			$query4 = mysql_query("INSERT INTO PRODUCTS (ean, name)
					VALUES ('".$ean."','".$name."')");	
		}
	}
}



foreach($goods_list as $item) {
		updateStock($item['goods_ean'], $item['avail_count'], $stock, $item['goods_name']);
}


Groet,
Joep de Jong
Hoe ziet de database structuur er uit?
Wat doet function p()?
Waarom gebruik je nog mysql en geen mysqli of pdo?
p() check de permissies,
dit is allemaal in orde.



Ik had voor morgen op de agenda om alles om te zetten naar MySQLi. Ik probeer nu deze functie wel om te zetten om te kijken of dat het probleem oplost.

Groet,
Joep

EDIT: Met MySQLi heb ik hetzelfde probleem.
Joep de Jong op 14/07/2015 11:48:44

Bij

UPDATE ST_FAR SET amount='625' WHERE ean='8711173001887'
komt er bijvoorbeeld in de database '3' te staan.


Misschien omdat die 2 keer wordt geupdated.

UPDATE ST_FAR SET amount='625' WHERE ean='8711173001887'
UPDATE ST_FAR SET amount='3' WHERE ean='8711173001887'

En zo ook de rest.
- SanThe - op 14/07/2015 12:54:24

[quote="Joep de Jong op 14/07/2015 11:48:44"]
Bij

UPDATE ST_FAR SET amount='625' WHERE ean='8711173001887'
komt er bijvoorbeeld in de database '3' te staan.


Misschien omdat die 2 keer wordt geupdated.

UPDATE ST_FAR SET amount='625' WHERE ean='8711173001887'
UPDATE ST_FAR SET amount='3' WHERE ean='8711173001887'
[/quote]

Nu je het zegt!
Even kijken waar het probleem zit :) bedankt!

Reageren