mysql_real_escape_string, ben ik nou zo dom ?
Ik ben nu al 3 uur bezig met het volgende:
voor het wegschrijven echo ik :
\'t Schrijvertje
In de database staat:
't Schrijvertje
Bij het uitlezen van de database krijg ik de melding:
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 't Schrijvertje'' at line 1
Wat doe/denk ik fout ?
voor het wegschrijven echo ik :
\'t Schrijvertje
In de database staat:
't Schrijvertje
Bij het uitlezen van de database krijg ik de melding:
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 't Schrijvertje'' at line 1
Wat doe/denk ik fout ?
Gewijzigd op 01/01/1970 01:00:00 door Patrick G
Nog eens apart addslashes() eroverheen laten gaan?
Edit: gebruik je wel $namecheck in de insert-query?
Edit: gebruik je wel $namecheck in de insert-query?
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Ja ik doe de volgende Query
waar moet ik dan die addslashes zetten ?
Code (php)
1
2
3
2
3
$Qry_2 = "INSERT INTO school (naam, cat, pnt) VALUES ('$namecheck', 'C', '$score')";
$result_id_2 = mysql_query($Qry_2) or die(mysql_query($Qry_2));
echo $namecheck;
$result_id_2 = mysql_query($Qry_2) or die(mysql_query($Qry_2));
echo $namecheck;
waar moet ik dan die addslashes zetten ?
Quote:
Nee, nooit doen! De functie addslashes() heb je nooit nodig, mysql_real_escape_string() is voldoende.Nog eens apart addslashes() eroverheen laten gaan?
@patrick: het wegschrijven en uitlezen uit de database zijn twee verschillende dingen. Zo te zien gaat het wegschrijven prima en heb je een probleem met het uitlezen. Laat de query die je voor dat doeleinde gebruikt eens zien, wellicht dat we je dan verder kunnen helpen.
Haal variabelen even uit de quotes, en gooi or die() alsjeblieft in de vuilnisbak. Or die() is een hele lelijke manier van foutafhandeling. Check met een if-constructie of een query juist of onjuist werd uitgevoerd.
@Blanche; als ik mysql_real_escape_string() gebruik, zie ik wél backslashes in mijn database. Het gaat dáár dus fout.
@Blanche; als ik mysql_real_escape_string() gebruik, zie ik wél backslashes in mijn database. Het gaat dáár dus fout.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Als ik zelf de "\" in de database toevoeg gaat het goed bij het uitlezen.
Maar als ik een vervolgens:
doe, dan schrijft hij wederom een record, terwijl er dus een record in de database staat.
@Djemo, als ik de variabelen uit de quote's haal krijg ik helemaal geen output
Maar als ik een vervolgens:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$namecheck = mysql_real_escape_string($name[0]);
$Qry = "SELECT naam,cat FROM school WHERE cat = 'C' AND naam = '$namecheck' " ;
$resultaat = mysql_query($Qry) or die (mysql_error(heheheh));
$row = mysql_num_rows($resultaat);
if ($row == 0){
$Qry_2 = "INSERT INTO school (naam, cat, pnt) VALUES ('$namecheck', 'C', '$score')";
$result_id_2 = mysql_query($Qry_2) or die(mysql_query($Qry_2));
echo $namecheck;
}
else
{
$sql="UPDATE school SET pnt = $score WHERE naam = '".$namecheck."' AND cat = 'C' ";
echo $namecheck;
if(!mysql_query($sql)){
echo 'Er is een fout opgetreden: '.mysql_error();
}
}
$Qry = "SELECT naam,cat FROM school WHERE cat = 'C' AND naam = '$namecheck' " ;
$resultaat = mysql_query($Qry) or die (mysql_error(heheheh));
$row = mysql_num_rows($resultaat);
if ($row == 0){
$Qry_2 = "INSERT INTO school (naam, cat, pnt) VALUES ('$namecheck', 'C', '$score')";
$result_id_2 = mysql_query($Qry_2) or die(mysql_query($Qry_2));
echo $namecheck;
}
else
{
$sql="UPDATE school SET pnt = $score WHERE naam = '".$namecheck."' AND cat = 'C' ";
echo $namecheck;
if(!mysql_query($sql)){
echo 'Er is een fout opgetreden: '.mysql_error();
}
}
doe, dan schrijft hij wederom een record, terwijl er dus een record in de database staat.
@Djemo, als ik de variabelen uit de quote's haal krijg ik helemaal geen output
Waarom doe je dit:
Waar komt $name[0] vandaan? Is dat een waarde die door een formulier verzonden is?
Waar komt $name[0] vandaan? Is dat een waarde die door een formulier verzonden is?
@patrick kijk eens of magic_quotes aan staat, als dat zo is moet je eerst stripslashes en dan pas mysql_real_escape_string doen.
@Djemo die slashes horen niet in je database, probeer maar eens iets in te voegen via phpmyadmin.
Edit:
Uiteraard alleen in het geval je gegevens uit een formulier komen zoals Jan zegt.
@Djemo die slashes horen niet in je database, probeer maar eens iets in te voegen via phpmyadmin.
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Ja, Jan,
Ik lees een XML file uit, en die wordt vervolgens naar de database gegooid.
Gaat allemaal prima, zolang er geen school is met de naam 't Schrijvertje.
Kan het iets te maken hebben met de definitie van het veld in de database ?
Ik lees een XML file uit, en die wordt vervolgens naar de database gegooid.
Gaat allemaal prima, zolang er geen school is met de naam 't Schrijvertje.
Kan het iets te maken hebben met de definitie van het veld in de database ?
Quote:
Nee, dan gaat het ergens anders fout. Hoogstwaarschijnlijk staat de magic_quotes_gpc instelling dan aan waardoor in jouw geval mysql_real_escape_string() ervoor zorgt dat de input dubbel geëscaped wordt...@Blanche; als ik mysql_real_escape_string() gebruik, zie ik wél backslashes in mijn database. Het gaat dáár dus fout.
@Patrick: echo de verschillende queries eens en kijk eens hoe die eruit zien. Dan wordt er waarschijnlijk heel wat duidelijk.
'patrick:
Ja, Jan,
Ik lees een XML file uit, en die wordt vervolgens naar de database gegooid.
Gaat allemaal prima, zolang er geen school is met de naam 't Schrijvertje.
Kan het iets te maken hebben met de definitie van het veld in de database ?
Ik lees een XML file uit, en die wordt vervolgens naar de database gegooid.
Gaat allemaal prima, zolang er geen school is met de naam 't Schrijvertje.
Kan het iets te maken hebben met de definitie van het veld in de database ?
Nee, wat de rest zegt; magic quotes staat waarschijnlijk aan. Maak een bestand met de naam .htaccess en zet dat in de root van je site. In het bestand zet je:
Dan ben je van het probleem af.
@ Jan,
Helaas dat helpt niets.
Ik krijg nog steeds:
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 't Schrijvertje'' at line 1
Opvallend is de dubbele quote aan het eind.
Helaas dat helpt niets.
Ik krijg nog steeds:
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 't Schrijvertje'' at line 1
Opvallend is de dubbele quote aan het eind.
uitzetten idd via .htaccess...
@Lode: get_magic_quotes_gpc() bedoel je denk ik?
int(1)
en dat betekent ?
Ik begrijp dat ik TFM moet lezen, maar ik zoek me het schompes, heb inmiddels al zo'n 25 tutorials gelezen, maar tot nu toe zonder resultaat.
Behalve dat het eten aangebrand was dan :(
en dat betekent ?
Ik begrijp dat ik TFM moet lezen, maar ik zoek me het schompes, heb inmiddels al zo'n 25 tutorials gelezen, maar tot nu toe zonder resultaat.
Behalve dat het eten aangebrand was dan :(
Gewijzigd op 01/01/1970 01:00:00 door patrick G
Dat betekent dus dat magic_quotes_gpc aan staat, iets dat niet echt gewenst is. Zet deze instelling dus uit in je php.ini of als je daar niet bij kan op de manier die Jan al beschrijft.
Ik heb inmiddels beide gedaan: krijg na controle de melding: int(0)
Maarr....
Als ik mysql_real_escape_string NIET gebruik,
als ik het wel gebruik, zie als hierboven.
You have an error in ..........'t Schrijvertje'' at line 1
Dit gebeurt zowel op mijn lokale machine als bij mijn provider !!
Maarr....
Als ik mysql_real_escape_string NIET gebruik,
Code (php)
1
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in D:\phpmap\xampp\htdocs\xampp\schaakmaat\schoolC.php on line 63
als ik het wel gebruik, zie als hierboven.
You have an error in ..........'t Schrijvertje'' at line 1
Dit gebeurt zowel op mijn lokale machine als bij mijn provider !!
Gewijzigd op 01/01/1970 01:00:00 door patrick G
'Djemo:
@Djemo: Er is je al meerdere keren verteld dat dit een hele domme fout is, hou dus s.v.p. op met dit foute advies, daarmee help je mensen van de wal in de sloot.Nog eens apart addslashes() eroverheen laten gaan?
Edit: gebruik je wel $namecheck in de insert-query?
Edit: gebruik je wel $namecheck in de insert-query?
Hoe doe je het wel?
magic_quotes zet je altijd uit en escapen doe je met bv. mysql_real_escape_string() of prepared statements.
Waarom? Omdat je dan nooit hardcoded slashes in je database krijgt die je er later weer uit moet slopen.
BUMP
Ik heb het opgelost, moest bij het uitlezen van de database een select in een select doen, daarbij gebruikte ik de naam uit de eerste SELECT zonder mysql_real_escape_string voor de WHERE van de 2e select.
gewoon op de verkeerde plaats gekeken.
allemaal bedankt....
Ik heb het opgelost, moest bij het uitlezen van de database een select in een select doen, daarbij gebruikte ik de naam uit de eerste SELECT zonder mysql_real_escape_string voor de WHERE van de 2e select.
gewoon op de verkeerde plaats gekeken.
allemaal bedankt....




