Beste mensen,
Heb een profielenscript, waar alles goed van werkt op 1 ding na.
Als het ene lid een bericht naar een ander lid stuurt, en er dit teken inzet -----> ' (alleen de comma in de lucht, krijgt hij of zij de volgende foutmelding ----> Er is een error opgetreden...Error:db::query() failed.ERROR BERICHT: Failed to run Query:INSERT INTO p_message ( member_id, sender_id, title, message, date, `read`, sender_show ) VALUES ( '47', '79', 'kijken', 'test ' test', '1253481609', '0', '1' ) 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', '1253481609', ' at line 15
In bovenstaand voorbeeld heb ik als onderwerp: kijken
En als bericht: test ' test
Iemand enig idee hoe dit specifieke teken een foutmelding geeft?
Mvg
- afwijkend teken, geeft een error
-
20-09-2009, 22:28 #1
- Berichten
- 66
- Lid sinds
- 15 Jaar
afwijkend teken in berichttekst versturen, geeft een error
-
-
20-09-2009, 23:46 #2
- Berichten
- 16
- Lid sinds
- 17 Jaar
je gebruikt enkele quotes om je values te scheiden, probeer eens mysql_real_escape_string() te gebruiken op je variabelen.
-
21-09-2009, 00:34 #3
- Berichten
- 263
- Lid sinds
- 18 Jaar
( member_id, sender_id, title, message, date, `read`, sender_show )
lijkt me sterk dat je een kolom `read` hebt. Moet dat niet gewoon read zijn?
trouwens als standaard alle berichten read = 0 moeten hebben kun je dat in je mysql structuur ook gewoon aangeven (default). Dit is juist voor zoiets zo gemaakt.
succes.
-
21-09-2009, 20:13 #4
- Berichten
- 66
- Lid sinds
- 15 Jaar
Beste JP Ras,
Probeer je zo goed mogelijk te volgen, maar snap het niet helemaal, ben niet zo'n wizard, maar als ik je goed begrijp, moet ik dit dus aanpassen in het script, en niet in de database?
Mvg...
Aanvullend bericht:
( member_id, sender_id, title, message, date, `read`, sender_show )
lijkt me sterk dat je een kolom `read` hebt. Moet dat niet gewoon read zijn?
trouwens als standaard alle berichten read = 0 moeten hebben kun je dat in je mysql structuur ook gewoon aangeven (default). Dit is juist voor zoiets zo gemaakt.
succes.
Dat lijkt mij wel ja, heb even gezocht in de database, maar vind nergens een kolom `read` terug, dat maakt het nog vreemder.
Buiten het feit dat dat niet goed is...Veroorzaakt dat de foutmelding, of is dit een nieuwe fout die ik niet ontdekt heb?
Mvg..Laatst aangepast door I.Ezerman : 21-09-2009 om 20:21 Reden: Automatisch samengevoegd.
-
22-09-2009, 11:10 #5
- Berichten
- 364
- Lid sinds
- 16 Jaar
Het probleem is hier de quote in test'test. MySQL zie de quote als einde-string. Die moet je dus escapen.
Ik ben geen MySQL expert, maar ik vermoed dat je zoiets moet doen:
VALUES(..., 'test\'test',...)
LotenDelen.nl
-
22-09-2009, 19:45 #6
- Berichten
- 66
- Lid sinds
- 15 Jaar
Tot zover iedereen bedankt voor de tips.
Na veel zoekwerk, vond ik eindelijk dit stuk code
PHP Code:$date=strtotime('now');
$ld['message_id']=$this->dbu->query_get_id("INSERT INTO p_message (
member_id,
sender_id,
title,
message,
date,
`read`,
sender_show
)
VALUES
(
'".$ld['receiver_id']."',
'".$_SESSION[U_ID]."',
'".$ld['title']."',
'".$ld['message']."',
'".$date."',
'0',
'1'
)
");
$this->send_notiffication_mail($ld);
$ld['error'].="Het bericht werd succesvol verzonden";
$ld['pag']='verstuurde_berichten';
$ld['member_id']=$ld['receiver_id'];
return true;
}
Mvg
-
22-09-2009, 19:56 #7
- Berichten
- 338
- Lid sinds
- 15 Jaar
Als het goed is moet je gewoon een preg_match uitvoeren over de submit... is makkelijk in te voegen je kan zelf de teken verbieden ('/"^%$#) bijv. Even zoeken en je vind het zo. Corrigeer mij als ik het fout heb
-
22-09-2009, 20:26 #8
- Berichten
- 66
- Lid sinds
- 15 Jaar
Ik begrijp het niet helemaal...
Wil juist dat alle tekens zijn toegestaan zodat de leden niet bij elk ' teken, die vervelende foutmelding krijgen.
-
22-09-2009, 23:50 #9
- Berichten
- 765
- Lid sinds
- 19 Jaar
mysql_real_escape_string moet je rond zo goed als alle variablen zetten die in de query geplaatst zullen worden.
Waar nu dus bv. '".$ld['title']. staat zet je '".mysql_real_escape_string($ld['title'])."'
-
23-09-2009, 09:50 #10
- Berichten
- 338
- Lid sinds
- 15 Jaar
een preg_match is juist tegen die tekens als er bij die invoer een teken is zoals ' zal de preg_match dat vertellen en geen submit maken..
-
23-09-2009, 14:59 #11
- Berichten
- 66
- Lid sinds
- 15 Jaar
Beste Ewald, van harte bedankt.
Heb geprobeerd wat je zei, en nu werkt het naar behoren!
Edit: Na mijn hele post eens nagelezen te hebben wil ik eenieder bedanken voor de oplossing. De website loopt inmiddels vrij goed! Dus nogmaals, IEDEREEN bedankt!
Mag wat mij betreft een slotje op.Laatst aangepast door I.Ezerman : 10-01-2010 om 23:16
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic