Ik heb al gezocht op GoT, maar ik heb nergens een oplossing gevonden.
( [rml][ mysql] insert into if not exists[/rml] )
Ik wil ik een rij invoegen als ie niet bestaat, en updaten als ie wel bestaat. Ik las dat je met MySQL >= 4.1 de syntax INSERT ... ON DUPLICATE KEY UPDATE kan gebruiken.
De doel-webserver waar de applicatie op gaat draaien heeft MySQL 3.23.xx draaien en ik kan die oplossing voor MySQL 4.1 dus niet gebruiken...
Tabelstructuur:
Vanuit PHP heb ik de volgende query geprobeerd (met een paar combinaties):
Ik krijg de volgende error:
Ik ga er dus vanuit dat die IF()-syntax die ik gebruik niet ondersteund wordt door MySQL 3.23.xx, klopt dit?
Hoe kan ik dit het beste oplossen?
( [rml][ mysql] insert into if not exists[/rml] )
Ik wil ik een rij invoegen als ie niet bestaat, en updaten als ie wel bestaat. Ik las dat je met MySQL >= 4.1 de syntax INSERT ... ON DUPLICATE KEY UPDATE kan gebruiken.
De doel-webserver waar de applicatie op gaat draaien heeft MySQL 3.23.xx draaien en ik kan die oplossing voor MySQL 4.1 dus niet gebruiken...
Tabelstructuur:
SQL:
1
2
3
4
5
6
7
8
9
| CREATE TABLE `shop_product_value_combos` ( `id` int(10) NOT NULL auto_increment, `rel_prod_id` int(10) NOT NULL default '0', `rel_value_id` int(10) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=5 ; INSERT INTO `shop_product_value_combos` VALUES (1, 1240, 3); INSERT INTO `shop_product_value_combos` VALUES (2, 1240, 5); |
Vanuit PHP heb ik de volgende query geprobeerd (met een paar combinaties):
SQL:
1
2
3
4
5
| IF (SELECT COUNT(*) FROM shop_product_value_combos WHERE rel_prod_id='1240' AND rel_value_id='3')=0 THEN INSERT INTO shop_product_value_combos (rel_prod_id, rel_value_id) VALUES ('1240', '3') ELSE UPDATE shop_product_value_combos SET rel_prod_id='1240', rel_value_id='3') END IF |
Ik krijg de volgende error:
SQL:
1
| You have an error in your SQL syntax near 'IF (SELECT COUNT(*) FROM shop_product_value_combos WHERE rel_prod_id='1240' AND r' at line 1 |
Ik ga er dus vanuit dat die IF()-syntax die ik gebruik niet ondersteund wordt door MySQL 3.23.xx, klopt dit?
Hoe kan ik dit het beste oplossen?
edit:
Query veranderd van PHP naar SQL
Query veranderd van PHP naar SQL
[ Voor 79% gewijzigd door Verwijderd op 10-09-2004 12:16 ]