PHP Mysql query INT wordt niet goed verwerkt.
Ik probeer een update uit te voeren aan de hand van een foreach.
Dit zijn de query's (ge-echo'd) die ik uitvoer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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'
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
komt er bijvoorbeeld in de database '3' te staan. Netals bij
2 komt. Terwijl
wel gewoon correct werkt.
Maar
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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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."')");
}
}
}
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."')");
}
}
}
Code (php)
1
2
3
2
3
foreach($goods_list as $item) {
updateStock($item['goods_ean'], $item['avail_count'], $stock, $item['goods_name']);
}
updateStock($item['goods_ean'], $item['avail_count'], $stock, $item['goods_name']);
}
Groet,
Joep de Jong
Gewijzigd op 14/07/2015 11:49:13 door Joep -
Wat doet function p()?
Waarom gebruik je nog mysql en geen mysqli of pdo?
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.
Gewijzigd op 14/07/2015 12:47:21 door Joep -
Joep de Jong op 14/07/2015 11:48:44:
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.
Gewijzigd op 14/07/2015 12:56:31 door - SanThe -
- SanThe - op 14/07/2015 12:54:24:
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'
Joep de Jong op 14/07/2015 11:48:44:
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'
Nu je het zegt!
Even kijken waar het probleem zit :) bedankt!