Update SQL werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Sander HTC

Sander HTC

22/09/2014 13:34:09
Quote Anchor link
Hallo allemaal, om een profiel aan te passen gebruik ik het volgende:

$sql="UPDATE users SET a2=$a2, a5=$a5, a15=$a15, a16=$a16, a17=$a17, a18=$a18, a19=$a19, a20=$a20, a21=$a21 WHERE ID=$ID";

Echter wanneer ik meer dan 9 aanpassingen in 1x wil uitvoeren, voorbeeld:

$sql="UPDATE users SET a2=$a2, a5=$a5, a15=$a15, a16=$a16, a17=$a17, a18=$a18, a19=$a19, a20=$a20, a21=$a21, a23=$a23 WHERE ID=$ID";

Dan doet ie het niet meer.

Is hier een oplossing voor?


Alvast heel erg bedankt :-)
Gewijzigd op 22/09/2014 13:35:55 door Sander HTC
 
PHP hulp

PHP hulp

06/11/2024 00:09:32
 
- SanThe -

- SanThe -

22/09/2014 13:40:37
Quote Anchor link
Bouw foutafhandeling in en zie de foutmelding.
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 13:47:15
Quote Anchor link
En wat is de reden dat je genummerde velden hebt? Met SQL wil je juist goed schaalbare queries maken, zonder regelmatig een veld toe te moeten voegen uit een bepaalde entiteit (groepen op een school bijv.)

Verdiep je eens in Database-normalisatie: http://nl.wikipedia.org/wiki/Databasenormalisatie
Gewijzigd op 22/09/2014 13:49:18 door - Ariën -
 
Sander HTC

Sander HTC

22/09/2014 13:48:49
Quote Anchor link
- SanThe - op 22/09/2014 13:40:37:
Bouw foutafhandeling in en zie de foutmelding.


Ja, dan krijg ik: Unknown column 'voorbeeld' in 'field list'
Met $a2 als voorbeeld
Uiteraard heb ik een mijn database een colum genaamd a2, dit heb ik al gecontroleerd
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 13:50:54
Quote Anchor link
Wat staat er in $a2? Is een betere databasestructuur geen betere oplossing? ;-)
Gewijzigd op 22/09/2014 13:51:21 door - Ariën -
 
Sander HTC

Sander HTC

22/09/2014 13:53:25
Quote Anchor link
- Aar - op 22/09/2014 13:47:15:
En wat is de reden dat je genummerde velden hebt? Met SQL wil je juist goed schaalbare queries maken, zonder regelmatig een veld toe te moeten voegen uit een bepaalde entiteit (groepen op een school bijv.)

Verdiep je eens in Database-normalisatie: http://nl.wikipedia.org/wiki/Databasenormalisatie


Ik werk met genummerde velden:
1: Omdat ik het makkelijker vind om nummers te onthouden dan woorden, dus ik heb liever
a1, a2, a3, a4 dan profielnaam, plaats, wachtwoord, etc
2: Ik wil geen woorden in mijn script, omdat mijn scripts alle woorden uit de pagina haalt van de taal van de bezoeker en zo houd ik het overzichtelijk (voor mezelf)

:-)


Toevoeging op 22/09/2014 13:55:44:

- Aar - op 22/09/2014 13:50:54:
Wat staat er in $a2?


Momenteel is $a2:

$a2 = "voorbeeld";

En dan werkt ie nog steeds niet
en a2 in mijn databse is:

a2 varchar(100) latin1_swedish_ci
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 13:58:18
Quote Anchor link
Dus met andere woorden: Je wilt dus bij een toevoeging extra moeite nemen om je applicatie up to date te houden, door de queries steeds aan te passen. Terwijl je met een genormaliseerde database een paar seconden tijd nodig hebt om een nieuwe klas/nummer toe te voegen? Plus dat de kans groot is dat je nu met een typfout een grote kans hebt dat de gegevens verkeerd verwerkt worden.

Tevens kan je met een genormaliseerde database makkelijker berekeningen uitvoeren dan met een ongenormaliseeerde database.

Dus misschien is het toch eens de moeite om ernaar te kijken. We willen je graag helpen met de opzet van een dergelijke database als je er niet uit komt. Ik kan je verzekeren dat alles op die manier juist een stuk overzichtelijker zal worden dan nu.

Kort samengevat: Genummerde velden zijn not-done, als je het omzet naar records, dan is het well-done ;-)

Als je kan vertellen wat je precies wilt bereiken met het systeem wat je bouwt, dan kunnen we meer vertellen.
Gewijzigd op 22/09/2014 14:02:04 door - Ariën -
 
Sander HTC

Sander HTC

22/09/2014 14:02:51
Quote Anchor link
Bedankt!! Ik heb het al gevonden omdat $a2 tekst is moet het zijn:

$sql="UPDATE users SET a2='$a2', a5=$a5, a15=$a15, a16=$a16, a17=$a17, a18=$a18, a19=$a19, a20=$a20, a21=$a21, a23=$a23 WHERE ID=$ID";

:-)
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 14:04:23
Quote Anchor link
Mooi zo, nu maar hopen dat je geen typfout maakt met zulke ellenlange queries ;-)
Gewijzigd op 22/09/2014 14:04:37 door - Ariën -
 
Pipo Clown

Pipo Clown

22/09/2014 14:12:39
Quote Anchor link
Ik neem aan dat de mogelijkheid dat je database gehacked wordt via SQL-injection dan ook bewust open gehouden is omdat je dit gemakkelijker en overzichtelijker vindt ?
 
Sander HTC

Sander HTC

22/09/2014 14:35:31
Quote Anchor link
Pipo Clown op 22/09/2014 14:12:39:
Ik neem aan dat de mogelijkheid dat je database gehacked wordt via SQL-injection dan ook bewust open gehouden is omdat je dit gemakkelijker en overzichtelijker vindt ?


Als we sarcastisch gaan doen: ja natuurlijk, zijn toch niet mijn gegevens!
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 14:38:14
Quote Anchor link
Wat heeft dit met sarcasme te maken? Het is gewoon een normale vraag.
Blijft alleen jammer dat ik weinig hoor over mijn goed bedoelde advies.
Gewijzigd op 22/09/2014 14:40:13 door - Ariën -
 
Sander HTC

Sander HTC

22/09/2014 15:24:45
Quote Anchor link
- Aar - op 22/09/2014 14:38:14:
Wat heeft dit met sarcasme te maken? Het is gewoon een normale vraag.
Blijft alleen jammer dat ik weinig hoor over mijn goed bedoelde advies.


Beste Aar, bedankt voor je ongevraagd advies wat me niet heeft geholpen :-)
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 15:38:51
Quote Anchor link
Ik betwijfel of je het nut van normalisatie begrijpt, hoewel ik het je natuurlijk niet kan verplichten.

Niet rottig bedoeld, maar als je doorgaat op de manier die je nu nog hanteert, dan kan je behoorlijk 'op hete kolen lopen' en tegen diverse knelpunten aanlopen. Je moet echt zelf weten. Het loont in ieder geval om er eens naar te kijken. Ik zeg niet dat je het binnen nu en dan moet aanpassen.

Vergeet niet dat er op dit forum ook gevorderden en experts zitten die mensen graag ook advies willen geven voor betere methodes, en men erbij kunnen helpen. Het zou in ieder geval fijn zijn als diegene er open voor zou staan in plaats van het direct af te wijzen zonder te zeggen waarom.
Gewijzigd op 22/09/2014 15:44:05 door - Ariën -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/09/2014 16:21:13
Quote Anchor link
Sander je slaat de plank compleet mis. Nummers zijn NIET makkelijker te onthouden dan namen. Voor geen enkel mens overigens. Je kunt een willekeurig nummer namelijk niet associëren.

Met wegnummer N207 weet lang niet iedereen waar deze ergens ligt maar met 'De weg van Hillegom tot Gouda' zullen veel mensen al een gevoel krijgen waar ze moeten gaan zoeken op de kaart.

Jouw mening slaat dus helemaal nergens op.
 
Snelle Jaap

Snelle Jaap

22/09/2014 16:25:38
Quote Anchor link
Sander HTC op 22/09/2014 14:35:31:
Pipo Clown op 22/09/2014 14:12:39:
Ik neem aan dat de mogelijkheid dat je database gehacked wordt via SQL-injection dan ook bewust open gehouden is omdat je dit gemakkelijker en overzichtelijker vindt ?


Als we sarcastisch gaan doen: ja natuurlijk, zijn toch niet mijn gegevens!

Jongens laten we het gezellig houden zo op de maandag middag.
 
Sander HTC

Sander HTC

22/09/2014 16:38:59
Quote Anchor link
Oke even een afbeelding van mijn database

Waar bijvoorbeeld 5 bij a19 staat voor:
Blauw (in het Nederlands)
Blue (in het Engels)
Blau (In het Duits)
etc.

Ergens anders in het script wordt 5 bij a19 gekoppeld met de juiste taal en woord
(die gebruiker/browser heeft gekozen)

In welk opzicht zou ik dit dan kunnen verbeteren?

Sorry voor mijn geïrriteerde antwoorden.

Afbeelding
Gewijzigd op 22/09/2014 16:40:25 door Sander HTC
 
Jan de Laet

Jan de Laet

22/09/2014 17:28:16
Quote Anchor link
a19 zou ik dan kleur noemen, of color.
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 17:40:12
Quote Anchor link
Ik zou een tabel maken met 'kleuren' (gaat het alleen om kleuren??)
Elke kleur heeft een eigen record met een ID-nummer (auto increment). Verder is er ook een tabel kleuren_users. Deze heeft de velden ID en UserID, en legt de koppeling tussen de gebruiker en de kleur.

Ik heb nog geen precies idee wat de topicstarter als doel heeft, en wat het script volledig gezien moet doen, maar dit is al een sterk verbeterde opzet zoals nu.
Gewijzigd op 22/09/2014 17:44:51 door - Ariën -
 
Sander HTC

Sander HTC

22/09/2014 17:47:18
Quote Anchor link
- Aar - op 22/09/2014 17:40:12:
Ik zou een tabel maken met 'kleuren' (gaat het alleen om kleuren.
Elke kleur heeft een eigen record met een ID-nummer (auto increment). Verder is er ook een tabel kleuren_users. Deze heeft de velden ID en UserID, en legt de koppeling tussen de gebruiker en de kleur.

Ik heb nog geen precies idee wat de topicstarter als doel heeft, en wat het script volledig gezien moet doen, maar ik dit is al een sterk verbeterde opzet zoals nu.


Nee Aar, elke kolom bevat andere gegevens en al deze gegevens worden niet meer gewijzigd of toegevoegd alleen maar geselecteerd en weergegeven.

Dus ik kan inderdaad een Databank maken van de gebruiker met in elke kolom een ID naar de andere databank met daarin dan het nummer wat het script moet hebben. Maar dat lijkt mij omslachtiger dan wat ik nu heb, want dan krijg ik zo'n 40 databanken.

Of ik begrijp het helemaal verkeerd.
 
- Ariën  -
Beheerder

- Ariën -

22/09/2014 17:55:41
Quote Anchor link
Die gegevens die je invoert als waarde zullen elk een eigen entiteit hebben, kleur bijv.
Waarom sla je die waardes dan niet op per record, in een kleuren tabel (of een 'waardes'-tabel).

Dan kan je zo onbeperkt veel records aanmaken voor de waardes, en deze koppelen aan de userID's.

Voordelen: Het is overzichtelijker, je hoeft de queries in je applicatie niet steeds aan te passen als er een nieuwe waarde bij moet komen.

Ik weet niet wat jij onder een databank verstaat, maar het gaat in dit geval om 1 database, met daarin drie tabellen:
- users
- kleuren (of waardes)
- kleuren_users / waardes_users

De tabel kleuren_users worden dan wel groot, maar dat maakt voor MySQL niet uit. Een paar integertjes met cijfertjes is echt niet zo veel, en MySQL kan heel veel slikken en opslaan.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.