Toon posts:

[MYSQL] INSERT query geeft error bij ' of "

Pagina: 1
Acties:
  • 39 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi,

Ik wil wat gegevens in een database wegschrijven met een vrij standaard stukje code, die prima werkt op een andere site op een andere server. Op de server waar ik nu op werk, werkt deze prima, totdat er een 'gevaarlijk' leesteken in de tekst voorkomt zoals ' of ".

Dan krijg ik de volgende error:

error: 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 ''test)' at line 1

Ik heb toen de tekst test'test geplaatst in een tekstveld. Dit is de code:

PHP:
1
mysql_query("INSERT INTO cmw_invites (invname, invtext) VALUES ('$_POST[gname]', '$_POST[gtext]')") or die ("error: ".mysql_error());


Wat doe ik fout? Of moet ik ergens iets op de server veranderen?

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 14-02 16:23
nee, je moet zorgen dat je php de slashes "escaped" zodat mysql ze niet interpreteert als sluittekens van je query :)
PHP:
1
2
3
4
<?
$sql = "INSERT INTO cmw_invites(invname, invtest) VALUES ('%s','%s');";
$res = mysql_query(sprintf($sql, addslashes(invname), addslashes(invtext)));
?>


Vergeet dan niet dat je bij het uitlezen ook de slashes weer moet un-escapen door
PHP:
1
$variable = stripslashes($res['invname']);


te gebruiken.

[ Voor 22% gewijzigd door Helmet op 09-08-2006 17:40 ]

Icons are overrated


Verwijderd

Topicstarter
Je was nog een " vergeten bij het einde van regel 2. :)

Ik krijg nu geen error, maar hij schrijft ook niks meer weg in de database.

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 14-02 16:23
waarschijnlijk omdat ik je veld invtest genoemd heb in plaats van invtext, en er geen controle op errors zit in de door mij gegeven code

Icons are overrated


Verwijderd

Topicstarter
Hij doet nu precies hetzelfde als eerst, alleen zodra ik een ' in de tekst plaats, schrijft hij niks weg in de database. En als ik een " toevoeg aan de tekst, schrijft hij alles wel weg, alleen tot de ".

Verwijderd

Topicstarter
Ik denk toch dat het ergens aan de server ligt. Op een ander domein werkt exact dezelfde code perfect (net getest), en op deze server krijg ik dus errors bij die leestekens.

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 16:21
En als je het nou eens zo doet...
PHP:
1
2
$strSql = "INSERT INTO cmw_invites SET `invname`='{$_POST['gname']}', `invtext`='{$_POST['gtext']}'";
mysql_query($strSql) or die ("error: ".mysql_error());

.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op woensdag 09 augustus 2006 @ 17:53:
Ik denk toch dat het ergens aan de server ligt. Op een ander domein werkt exact dezelfde code perfect (net getest), en op deze server krijg ik dus errors bij die leestekens.
Het zou natuurlijk heel goed kunnen dat op je vorige server Magic Quotes aanstond. Dan hoef je het dus niet meer te doen.

Hier kan je lezen waarom het gebruik van Magic Quotes niet handig is en wat dan wel te gebruiken: http://www.webmasterstop.com/63.html

Ik ga dit topic overigens op slot doen. Dit had je zelf kunnen vinden door simpelweg je error door Google te halen. Tip voor volgende keer dus ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1

Dit topic is gesloten.