login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Meerdere dingen in 1x updaten.

Offline Pakito - 28/12/2009 12:42
Avatar van PakitoNieuw lid Jep, ben ik weer te zeuren xD.


ik vroeg me af hoe ik 20 arrays in 1x update, ik kan namenlijk alleen vinden met WHERE maar dan kan je maar op 1 id of zie ik dat fout? zonder WHERE werkt het ook niet. Inserten met foreach werkt wel.


b.v.d.

19 antwoorden

Gesponsorde links
Offline Daiben - 28/12/2009 12:47 (laatste wijziging 28/12/2009 12:51)
Avatar van Daiben Lid
  1. for($i = '1'; $i < 20; $i++)
  2. {
  3. mysql_query("insert into iets () VALUES () where id = '$i'");
  4. }
Offline Pakito - 28/12/2009 12:53 (laatste wijziging 28/12/2009 14:03)
Avatar van Pakito Nieuw lid
  1. foreach($result['stats']['deaths']['user'] as $key => $val) {
  2. for($i = '0'; $i < 19; $i++){
  3. mysql_query("UPDATE Doden SET Naam= '{$val['name']['value']}' WHERE id = '$i'");
  4. //mysql_query("INSERT INTO `Doden` (`Naam`, `Tijd`, `Rank`, `Familie`) VALUES ('{$val['name']['value']}', '{$val['time']['value']}', '{$val['rank']['value']}', '{$val['family']['value']}')") or die (mysql_error());
  5. }
  6. }


kheb t nu zo, die insert heb ik ff tussen // gedaan die werkt wel. de UPDATE nog niet
Offline Daiben - 28/12/2009 12:55
Avatar van Daiben Lid die id moet dan wel de waarde hebben van je rij he
Offline Pakito - 28/12/2009 12:56 (laatste wijziging 28/12/2009 12:57)
Avatar van Pakito Nieuw lid hoe bedoel je?


sorry voor de hl maar die doet t geloof ik niet xD
Offline Daiben - 28/12/2009 12:58 (laatste wijziging 28/12/2009 12:59)
Avatar van Daiben Lid zo te zien moet jij een bepaalde user updaten? ik kan nie zien hoe jou db eruit ziet
Offline Pakito - 28/12/2009 12:59 (laatste wijziging 28/12/2009 13:04)
Avatar van Pakito Nieuw lid Nee ik wil ook geen insert, mn insert werkte, maar als ik met cronjobs doe is het binnen de kortste keren vol dus wil ik met update xD

nee geen user, ik haal uit een lijst arrays de doden van een spelletje barafranca.nl dat wil ik opslaan in mn db en loggen opmijn site xD

http://aepje.nl/logarrays.php daar staan de arrays
Offline Martijn - 28/12/2009 13:07 (laatste wijziging 28/12/2009 13:13)
Avatar van Martijn Crew PHP Daiben, jouw manier is fout ;) Het zal werken, maar 20 queries worden daar uitgevoerd. Stel je hebt 100 users, dan schiet het lekker op.
Als je meerdere rijgen in een INSERT wil doen, kan dat zo:
  1. INSERT INTO tabelnaam (kolom1,kolom2,kolom2) VALUES
  2. ('waarde1a','waarde2a','waarde3a'),
  3. ('waarde1b','waarde2b','waarde3b'),
  4. ('waarde1c','waarde2c','waarde3c')


Bovendien veel overzichtelijker ;)

Dan de hoofdvraag, je kunt wél meerdere argumenten geven in je WHERE, óók dezelfde kolom.
  1. WHERE id=123
  2. WHERE id=123 OR 321
  3. WHERE id>=123 AND id<=321


en je kunt zoveel AND en OR achter elkaar zetten als je wilt (al als je er veel condities aan toevoegt je toch even moet gaan nadenken of je misschien een betere database indeling moet kiezen)

edit:
Je kunt ook de IN functie gebruiken. Stel je hebt een array met id's.
Dan moet je zorgen dat het een string word, gescheiden door komma en daarna kan het in je query via IN:

  1. $array = array(1,2,3);
  2. $string = implode(",",$array); // maakt "1,2,3"

  1. UPDATE tabel SET kolom=123 WHERE id IN($string)

zover de wijze wijsheid
Offline Pakito - 28/12/2009 13:09
Avatar van Pakito Nieuw lid Oke, ik zal het proberen, dus met update zou ik dus bijv. id<=20 kunnen doen, en dan doet hij alle 20 id's ?
Offline Martijn - 28/12/2009 13:12
Avatar van Martijn Crew PHP zie mn edit even maar op je vraag, als je doe id<=20, dan zal deze dit doen:
WHERE id kleiner dan, of is gelijk aan 20

Als je je hele tabel wilt geupdate, zet je er gewoon geen where bij 
Offline Pakito - 28/12/2009 13:15 (laatste wijziging 28/12/2009 14:04)
Avatar van Pakito Nieuw lid
  1. mysql_query("UPDATE Doden SET (`Naam`, `Tijd`, `Rank`, `Familie`) VALUES ('{$val['name']['value']}', '{$val['time']['value']}', '{$val['rank']['value']}', '{$val['family']['value']}')") or die (mysql_error());


Waarom doet mn hl het niet?xD

dan hoort dit gewoon te werken, vreemd genoeg krijg ik dan

Citaat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`Naam`, `Tijd`, `Rank`, `Familie`) VALUES ('Roflcopters', '1261999910', 'Thief'' at line 1
te zien xD
Offline Martijn - 28/12/2009 13:20
Avatar van Martijn Crew PHP gebruik eens de code tags 

en $val['rank']['value'] heeft vast een ' in de waarde staan.
Offline Pakito - 28/12/2009 13:30
Avatar van Pakito Nieuw lid in insert werkt het wel, en waar staan die code tags [php] werkte niet namenlijk xD.
Offline Martijn - 28/12/2009 13:53
Avatar van Martijn Crew PHP je hebt B i U en daarnaast een vaag plaatje, dat plaatje is m
Offline ArieMedia - 28/12/2009 13:53
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Pakito schreef:
in insert werkt het wel, en waar staan die code tags [php] werkte niet namenlijk xD.

[ code=php] [/code]

Heb je trouwens een beetje code.. want volgensmij gooi je een paar termen door elkaar.
Offline Pakito - 28/12/2009 13:55
Avatar van Pakito Nieuw lid
  1. foreach($result['stats']['deaths']['user'] as $key => $val) {
  2. mysql_query("UPDATE Doden SET (`Naam`, `Tijd`, `Rank`, `Familie`) VALUES ('{$val['name']['value']}', '{$val['time']['value']}', '{$val['rank']['value']}', '{$val['family']['value']}')") or die (mysql_error());
  3. }


dat is de update, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`Naam`, `Tijd`, `Rank`, `Familie`) VALUES ('Sam', '1262002868', 'Thief', '')' at line 1
dat is de error die ik krijg.
Offline Martijn - 28/12/2009 13:57 (laatste wijziging 28/12/2009 13:57)
Avatar van Martijn Crew PHP ik zei toch net wat er fout was. De rank heeft waarschijnlijk een ' in staan. Dat kan niet, addslashes() doen
Offline Pakito - 28/12/2009 13:59
Avatar van Pakito Nieuw lid addslashes({$val['rank']['value']})

zo is dat dan tog?
Offline ArieMedia - 28/12/2009 14:01 (laatste wijziging 28/12/2009 14:49)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
  1. UPDATE doden
  2. SET naam = "Naam",
  3. Rank = "Rank",
  4. Familie = "Familie"
  5. WHERE id = 1


Dat is een juiste update query

Edit:
Als je wil inserten,

  1. INSERT INTO doden (veld1, veld2) VALUES ("Henk", "Kaas")

Koen schreef:
Code tags, dat zou jij ondertussen al moeten weten?
Offline Martijn - 28/12/2009 14:57
Avatar van Martijn Crew PHP Arie, dat punt zijn we alláng voorbij ;) volgende keer graag even hele topic lezen
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s