mysql ON duplicate entry

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Karizma Yusuf

Karizma Yusuf

07/10/2010 20:47:37
Quote Anchor link
OPGELOST!..

De volgende regel code deed zijn werk
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?PHP
ON duplicate KEY UPDATE user_id=user_id, img_name='".$this->_base."',
email='".$this->_user->email."', img_location=img_location, img_type=img_type")
?>


Ik heb wat rondgekeken op de forum, maar ik ben wat verward met de "ON duplicate KEY entry" kan ik hier mee niet de kolommen updaten van mijn mysql_query of is dit alleen voor de primaire sleutel??

Ik heb nu de onderstaande code maar krijg steeds een fout melding.
Kan iemand mij uitleggen wat ik hier fout doe??

Ik kan uiteraard ook met een if-statement controleren of het id al bestaat en dan een update query uitvoeren, maar ON duplicate is veel netter vindt ik.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
mysql_query("INSERT INTO profile
(
 user_id,
 email,
 img_name,
 img_location,
 img_type    
)
VALUES (
 '"
.$this->_user->user_id."',
 '"
.$this->_user->email."',
 '"
.$this->_base."',
 '"
.$this->_user->user_id."',
 '.jpg'
)ON duplicate KEY UPDATE
 img_name=values('"
.$this->_base."'),
 email=values('"
.$this->_user->email."'),
 img_location=values('"
.$this->_user->user_id."'),
 img_type=values('.jpg')"
)or die(mysql_error());
?>


foutmelding:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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 '''), email=values('mail@gmail.com'), img_location=values('1')'
at line 16
?>
Gewijzigd op 07/10/2010 22:18:01 door Karizma Yusuf
 
PHP hulp

PHP hulp

25/04/2024 01:17:03
 

07/10/2010 20:50:52
 
Noppes Homeland

Noppes Homeland

07/10/2010 21:01:04
Quote Anchor link
Wat dacht je er van om iets te doen tegen SQL Injectie?

query loopt dus stuk op:
img_name=values('".$this->_user->base."'),

$this->_user->base heeft een quote -> '''),

Vraag:
wat moet dit voorstellen
values('".$this->_user->base."')

Heb je nu daadwerklijk z'n naam voor SQL FUNCTIE/PROCEDURE of hoop je dat er een php fucntie met die wazige naam wordt aangeroepen.

Codeer duidelijk, zodat er geen misverstanden over kunnen ontstaan van wat wat is.
 
Karizma Yusuf

Karizma Yusuf

07/10/2010 21:02:03
Quote Anchor link
@NOPPES voor sql injecties hoef ik niet bang te zijn hier want die gegevens worden niet opgehaald via een formulier.

$base = VoornaamAchternaam

Ja, ik snap dan ook niet wat ik fout doe.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
insert into table (a,b,c) values(1,2,3) ON duplicate KEY UPDATE a=1, b=2, c=3
?>


Moet dan tog gewoon werken en zoiets heb ik tog boven ook?? Of begrijp ik de functie verkeerd??
Gewijzigd op 07/10/2010 21:04:39 door Karizma Yusuf
 
Noppes Homeland

Noppes Homeland

07/10/2010 21:08:14
Quote Anchor link
Moet ik dan nog duidelijker zijn?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
class iknietbegrijpen {

   public $this->_user->base  = "z'n phpscript heb ik nie gezien";
}
?>


dus
dan komt er in je query te staan:
img_name=values('z'n phpscript heb ik nie gezien'),

en dat gaat geen enkele database begrijpen

En nu nog antwoord geven op mijn vraag of heb je geen flauw benul?

Oh niets doen tegen SQL Injectie, ook met eigen gegevens kan je je database flink onderuit halen.
Gewijzigd op 07/10/2010 21:10:07 door Noppes Homeland
 
Karizma Yusuf

Karizma Yusuf

07/10/2010 21:13:28
Quote Anchor link
@Noppes $this->_base is geen FUNCTIE het is een private VARIABELE die ik gebruik in mijn script om img_naam te defineren in mijn gehele script. $this->_user->base was een typ fout. heb gecorrigeerd werk nog steeds niet.

als ik een echo uitvoer op $this->_base krijg ik dan ook voornaamAchternaam

ZONDER the on duplicate werkt het prima, snap alleen niet waar het fout zit.

Quote:
Oh niets doen tegen SQL Injectie, ook met eigen gegevens kan je je database flink onderuit halen.


DEZE gegevens zijn al een TIG keer door een SQL injectie gehaald dus ik weet niet wat voor onzin jij nu praat met je SQL injecties. Dit is maar een gedeelte van de script dat een fout geeft.
Gewijzigd op 07/10/2010 21:19:31 door Karizma Yusuf
 
Noppes Homeland

Noppes Homeland

07/10/2010 21:22:06
Quote Anchor link
Oke een typotje kan er ook nog wel bij

En dat $this->_base geen functie is dat kan ik ook nog wel lezen en zelfs begrijpen.

Nogmaals dan:
de foutmelding geeft duidelijk aan dat op deze regel
img_name=values('".$this->_base."'),
de excutie fout loopt!

en ook duidelijk dat er een quote te veel staat op die regel staat

maar geef nu eens antwoord op mijn vraag want daar heb je nog steeds geen duidelijkheid over gegeven.

Is values een SQL FUCNTIE/PROCEDURE of een PHP functie / method

en dan ook maar gelijk vragen wat dat dan doet met de doorgegeven variabele.
Quote:
DEZE gegevens zijn al een TIG keer door een SQL injectie gehaald dus ik weet niet wat voor onzin jij nu praat met je SQL injecties. Dit is maar een gedeelte van de script dat een fout geeft.

Dan is het een allerbelabberste protectie tegen SQL Injectie
Gewijzigd op 07/10/2010 21:25:22 door Noppes Homeland
 
Karizma Yusuf

Karizma Yusuf

07/10/2010 22:16:57
Quote Anchor link
@Noppes wees niet zo een wijsneus en hoe kan jij herkennen aan de boven staande gegevens dat SQL injecties niet wordt tegengehouden.

En me probleem is al opgelost.
 

07/10/2010 22:19:40
Quote Anchor link
Hoe heb je het opgelost?
 
Karizma Yusuf

Karizma Yusuf

07/10/2010 22:22:44
Quote Anchor link
Staat in me 1e reactie
 
Robert Deiman

Robert Deiman

07/10/2010 23:05:08
Quote Anchor link
Noppes Homeland op 07/10/2010 21:22:06:
Oke een typotje kan er ook nog wel bij

En dat $this->_base geen functie is dat kan ik ook nog wel lezen en zelfs begrijpen.

Nogmaals dan:
de foutmelding geeft duidelijk aan dat op deze regel
img_name=values('".$this->_base."'),
de excutie fout loopt!

en ook duidelijk dat er een quote te veel staat op die regel staat

maar geef nu eens antwoord op mijn vraag want daar heb je nog steeds geen duidelijkheid over gegeven.

Is values een SQL FUCNTIE/PROCEDURE of een PHP functie / method

en dan ook maar gelijk vragen wat dat dan doet met de doorgegeven variabele.
Quote:
DEZE gegevens zijn al een TIG keer door een SQL injectie gehaald dus ik weet niet wat voor onzin jij nu praat met je SQL injecties. Dit is maar een gedeelte van de script dat een fout geeft.

Dan is het een allerbelabberste protectie tegen SQL Injectie



Zoals je aan zijn code al kan zien is het een variabele in een klasse. Deze kan al prima gecontroleerd zijn, voordat die naar de query gaat. Ik knal ook altijd variabelen zo in een query, juist omdat ik ze vantevoren al controleer. Kan je wel zeggen dat het een slechte protectie is, maar dat kan je er niet eens uit halen.
 



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.