MySQL error...
Heey,
Ik heb een dvd beheerscript (van redcrew) en deze gebruik ik op mijn eigen website. Alles werkt goed, vandaag maakte ik een back-up van mijn database, heb ik daarna alles verwijderd en geprobeerd het gehele bestand te implementeren (ik heb een paar nummers aangepast maar geen belangrijke tekens) hij geeft nu de volgende melding:
Fout
SQL-query:
INSERT INTO `dvd`
VALUES ( 210, 'Mr. Bean's Holiday ', 'Mr.Bean 's Holiday', 'Mr. Bean wint een vakantie naar Frankrijk. Hij pakt zijn koffer en camcorder en verlaat het natte, troosteloze Londen. De reis naar de Franse kust verloopt echter niet zo vlot als gewenst. Overal waar hij komt, krijgt de eeuwig stuntelende Bean te maken met ongelukjes en toevalligheden. Aan het einde van zijn tocht door het Franse platteland wacht het mondaine Cannes. Onderweg heeft Bean gezelschap opgescharreld: het zoontje van een Cannes jurylid en een eerzuchtige actrice wijken niet van zijn zijde.', 196, 90, 2007, '37642', '' ) ;
MySQL retourneerde:
#1064 - 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 's Holiday', 'Mr. Bean's Holiday', 'Mr. Bean wint een vakantie naar Frankrijk. Hi' at line 1
Weet iemand waardoor dit komt/kan komen?
Alvast bedankt!
Edwin
Ik heb een dvd beheerscript (van redcrew) en deze gebruik ik op mijn eigen website. Alles werkt goed, vandaag maakte ik een back-up van mijn database, heb ik daarna alles verwijderd en geprobeerd het gehele bestand te implementeren (ik heb een paar nummers aangepast maar geen belangrijke tekens) hij geeft nu de volgende melding:
Fout
SQL-query:
INSERT INTO `dvd`
VALUES ( 210, 'Mr. Bean's Holiday ', 'Mr.Bean 's Holiday', 'Mr. Bean wint een vakantie naar Frankrijk. Hij pakt zijn koffer en camcorder en verlaat het natte, troosteloze Londen. De reis naar de Franse kust verloopt echter niet zo vlot als gewenst. Overal waar hij komt, krijgt de eeuwig stuntelende Bean te maken met ongelukjes en toevalligheden. Aan het einde van zijn tocht door het Franse platteland wacht het mondaine Cannes. Onderweg heeft Bean gezelschap opgescharreld: het zoontje van een Cannes jurylid en een eerzuchtige actrice wijken niet van zijn zijde.', 196, 90, 2007, '37642', '' ) ;
MySQL retourneerde:
#1064 - 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 's Holiday', 'Mr. Bean's Holiday', 'Mr. Bean wint een vakantie naar Frankrijk. Hi' at line 1
Weet iemand waardoor dit komt/kan komen?
Alvast bedankt!
Edwin
Gewijzigd op 01/01/1970 01:00:00 door Edwin
Die single quote moet je escapen met een \
Edit: dus Mr. Bean\'s Holiday
Edit: dus Mr. Bean\'s Holiday
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
En met escapen bedoelt Jan dat je de functie mysql_real_escape_string() moet gebruiken. Je wilt geen hardcoded \ in je database gooien, dan moet die ellende er later weer met het handje uit gaan slopen.
juistem... hij doet het nu wel, maarja ik zal is uitzoeken (als ik tijd heb) van die functie ;)
maareuh, kun je mij vertellen waarom hij dit nooit heeft gedaan en nu opeens wel?
bedankt
maareuh, kun je mij vertellen waarom hij dit nooit heeft gedaan en nu opeens wel?
bedankt
Een aanpassing aan de Magic Quotes op de server.
Die horen gewoon uit te staan.
Die horen gewoon uit te staan.
Ja, ik host em niet zelf thuis maar dit is gewoon een instelling op de webserver? dus als ik hun een mail stuur kunnen hun dit aanpassen en heb ik hier geen last van?
Steek je kop maar in het zand, dat helpt echt.
Magic_quotes moet uit staan, er is niets magisch aan beveiliging. Jij moet er voor zorgen dat je overal mysql_real_escape_string() gebruikt op data die je in een query zet die voor MySQL is bestemd. Doe je dat niet, dan wordt het hoogste tijd om wakker te worden en dat alsnog te doen.
Wees blij dat je host éindelijk dit soort onzin heeft uitgezet, hadden ze jaren geleden al moeten doen. Het is niet anders.
Magic_quotes moet uit staan, er is niets magisch aan beveiliging. Jij moet er voor zorgen dat je overal mysql_real_escape_string() gebruikt op data die je in een query zet die voor MySQL is bestemd. Doe je dat niet, dan wordt het hoogste tijd om wakker te worden en dat alsnog te doen.
Wees blij dat je host éindelijk dit soort onzin heeft uitgezet, hadden ze jaren geleden al moeten doen. Het is niet anders.
Ik weet de oplossing al...
Ik heb nu int php script ook het volgende neergezet zodat hij automatisch 2 keer een ' toevoegt i.p.v. 1 keer...
{
$naam = mysql_real_escape_string($_POST['naam']);
$naam = str_replace("'", "''", $naam);
}
Klopt deze string of niet? (str_replace)
bedankt!
Ik heb nu int php script ook het volgende neergezet zodat hij automatisch 2 keer een ' toevoegt i.p.v. 1 keer...
{
$naam = mysql_real_escape_string($_POST['naam']);
$naam = str_replace("'", "''", $naam);
}
Klopt deze string of niet? (str_replace)
bedankt!
'Edwin:
...zodat hij automatisch 2 keer een ' toevoegt i.p.v. 1 keer...
En wat mag daar het nut van zijn?
Waarom luister je niet naar de adviezen die je krijgt?
volgens mij zoals je ziet gebruik ik al een mysql_real_excape_string dus daarmee zitten pqfrank en ik op 1 lijn...
Het nut van 2 ' ' is dat ik hierdoor geen foutmeldingen krijg in mijn database, dit is beter dan een harde \
dus vertel mij maar even waar ik dan niet luister naar de adviezen?
Dus voordat je ff tegen mij begint vertel dan zelf wat ik dan wel fout doe...
en dan ook nog, waarom post frank dit... slaat ook nergens op... 8-)
Wees blij dat je host éindelijk dit soort onzin heeft uitgezet, hadden ze jaren geleden al moeten doen. Het is niet anders.
Het nut van 2 ' ' is dat ik hierdoor geen foutmeldingen krijg in mijn database, dit is beter dan een harde \
dus vertel mij maar even waar ik dan niet luister naar de adviezen?
Dus voordat je ff tegen mij begint vertel dan zelf wat ik dan wel fout doe...
en dan ook nog, waarom post frank dit... slaat ook nergens op... 8-)
Wees blij dat je host éindelijk dit soort onzin heeft uitgezet, hadden ze jaren geleden al moeten doen. Het is niet anders.
Waarom zou je dit gebruiken:
$naam = str_replace("'", "''", $naam);
Dit is niet nodig om de content in de database te zetten, daar heb je mysql_real_escape_string() al voor.
$naam = str_replace("'", "''", $naam);
Dit is niet nodig om de content in de database te zetten, daar heb je mysql_real_escape_string() al voor.
Om te zorgen dat ik dan wel een back-up van de database kan maken en erna terug kan zetten, voordat ik die regel toevoegde gaf hij namelijk de foutmelding die ik hierboven heb beschreven...




