verschillende rijen updaten in 1 query
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
UPDATE `nieuwe_site`.`members` SET `level` = '7' WHERE `members`.`id` =11 LIMIT 1 ;
UPDATE `nieuwe_site`.`members` SET `level` = '4' WHERE `members`.`id` =13 LIMIT 1 ;
UPDATE `nieuwe_site`.`members` SET `level` = '6' WHERE `members`.`id` =14 LIMIT 1 ;
?>
UPDATE `nieuwe_site`.`members` SET `level` = '7' WHERE `members`.`id` =11 LIMIT 1 ;
UPDATE `nieuwe_site`.`members` SET `level` = '4' WHERE `members`.`id` =13 LIMIT 1 ;
UPDATE `nieuwe_site`.`members` SET `level` = '6' WHERE `members`.`id` =14 LIMIT 1 ;
?>
maar dan in 1 query, is dit mogelijk?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
mysql_query("
UPDATE members SET level = '7' WHERE id = 11 LIMIT 1;
UPDATE members SET level = '4' WHERE id = 13 LIMIT 1;
UPDATE members SET level = '6' WHERE id = 14 LIMIT 1;
";
?>
mysql_query("
UPDATE members SET level = '7' WHERE id = 11 LIMIT 1;
UPDATE members SET level = '4' WHERE id = 13 LIMIT 1;
UPDATE members SET level = '6' WHERE id = 14 LIMIT 1;
";
?>
Dit is dus 1 query met daarin 3 opdrachten.
Behalve met SELECT kan je 'oneindig' veel opdrachten in 1x geven.
phpMyAdmin doet het zelf ook zo, en dat is prima.
Let wel op die rare backticks (`) er niet horen! Bovenstaande code (van mij) is dus veel netter. EN je hoeft niet altijd je tabelnaam te vermelden!
Quote:
mysql_query() sends an unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier .
Eddy heeft dan blijkbaar nieuwe functionaliteit ontdekt, de functie mysql_query() ondersteunde tot een paar minuten geleden geen meervoudige queries.
Wanneer je mysqli gaat gebruiken of PDO, dan kan het wel.
Overigens kun je ook met een CASE in de SQL aan de slag, dan heb je maar 1 query nodig om de genoemde 3 records te updaten. Het ligt aan je SQL-niveau of dat is aan te raden, ga eerst eens met eenvoudige voorbeeldjes spelen.
Ps. Dat PMA het zo lijkt te doen, wil niet zeggen dat het ook zo gebeurt... PMA herschrijft alle queries, vandaar dat ook altijd een LIMIT verschijnt en van die vieze vuile gore backticks ` die niet in SQL thuis horen. PMA is ruk en niet meer dan dat.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
ik denk dat ik me es wat meer ga verdiepen in PDO, helaas ondersteund de hosting waar ik zit nog geen mysql in PDO, dus nog ff w88