verschil ' en " en oplossen ' in tekst
het teken '
of het teken "
Ik had namelijk een probleem dat soms invoer niet werd geplaatst in mijn sql.
na langzoeken kwam ik er dus achter dat de tekst die ik soms invoer ook het teken
' heeft.
Gezien ik in mijn php werk met ' gezien dit gemakkelijker is met het invoegen van "
word door deze tekst met het teken ' de boel weer afgesloten.
Hoe moet je dit eigenlijk goed verwerken, want als je alles afsluit met "
en je hebt een keer een " in je tekst dan zal ik het zelfde probleem hebben.
ik hoop dat ik een beetje begrijpelijk heb uit gelegd wat ik wil weten.
bedankt.
met mysqli_real_escape_string()
Gewijzigd op 12/10/2013 23:04:51 door Dennis WhoCares
Ik ben geen beroepsprogrammeur , dus ik weet niet alles vandaar.
Gewijzigd op 12/10/2013 23:12:11 door Donny Wie weet
maar er zal toch wel een manier zijn dat je die gewoon kan laten staan?
Ik heb in mijn jongere PHP-jaren ook veel op php.net rondgeneusd. ;-)
natuurlijk al doende ga je steeds meer leren
' = '
" = "
dan wordt je query niet afgebroken :)
Als dit invoer is van enige gebruikers, kun je eerst str_replace() gebruiken om dit op te lossen
Gewijzigd op 12/10/2013 23:18:56 door Dennis WhoCares
om ze voorlopig maar te verwijderen.
Ik hoef nu eigenlijk alleen maar jouw codes er in te zetten bedankt.
en ik zat al aan chr te denken maar dat ging dat ook niet zogemakkelijk
echter zie ik wel dat de code gewoon het zelfde is want chr$(34) is ook ".
Gewijzigd op 12/10/2013 23:31:25 door Dennis WhoCares
om op de eerste vraag van de ts mijn idee te geven:
zowel singelequotes als doublequotes zijn goed in PHP.
Omdat php minder grappen uithaalt met singlequotes dan met doubleqoutes zouden de singlequotes iets sneller zijn.
denk bij 'grappen' aan het zoeken naar variabelen in de tekst.
wat ik zelf doe is het volgende:
Ik gebruik binnen php overal singlequotes behalve bij het formuleren van een query. Die doe ik juist wel tussen doublequotes zodat je waardes in je query tussen singlequotes kunt zetten zonder te escapen. Variabelen hou ik altijd buiten de quotes.
wat betreft het opslaan van quotes in de database:
ik gebruik altijd de collatie ci_unicode_utf8.
hierdoor kun je beiden quotes alsmede speciale tekens als é en â opslaan in je database zonder deze karakters door als htmlentities of als ascii opgeslagen hoeven te worden.
Gewijzigd op 13/10/2013 02:36:16 door Frank Nietbelangrijk
okee ga ik onthouden en eventueel aanpassen.
Alleen wat mijn probleem is volgens mij.
Is dat voordat het de sql in gaat gaat hij al in de war met de ' ik zal even de code plaatsen die ik gebruik. misschien dat ik daar wat verkeerd doet.
Op dit moment loop het wel goed met de eerst genoemde oplossingen.
Toevoeging op 13/10/2013 02:48:11:
eerste gedeelte hier voer ik een omschrijving in.
ps: filmnaam post word nog uit een voorgaande php weggehaald
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$filmnaam=$_POST['filmnaam'];
// sluiten php
<p align="center"> </p>
<p align="center"><span class="bb"></span></p>
toevoegen
<form action="index2.php?p=fgezientoevoegen3" method="post">
<div align="center">
<table width="694" height="139" border="1">
<tr>
<td width="141" height="37">Omschrijving:<a href="http://www.google.nl//search?q=<?php echo $filmnaam ?> moviemeter" target="_blank"><img src="http://www.msxflash.nl/plaatjes/zoeken-20x20.png" alt="Zoeken Cover" width="19" height="19" /></a></td>
<td width="537"><textarea name="omschrijving" cols="100" rows="8" id="omschrijving"></textarea></td>
</tr>
</table>
</div>
<p align="center"> </p>
</form>
</body>
</html>
?>
$filmnaam=$_POST['filmnaam'];
// sluiten php
<p align="center"> </p>
<p align="center"><span class="bb"></span></p>
toevoegen
<form action="index2.php?p=fgezientoevoegen3" method="post">
<div align="center">
<table width="694" height="139" border="1">
<tr>
<td width="141" height="37">Omschrijving:<a href="http://www.google.nl//search?q=<?php echo $filmnaam ?> moviemeter" target="_blank"><img src="http://www.msxflash.nl/plaatjes/zoeken-20x20.png" alt="Zoeken Cover" width="19" height="19" /></a></td>
<td width="537"><textarea name="omschrijving" cols="100" rows="8" id="omschrijving"></textarea></td>
</tr>
</table>
</div>
<p align="center"> </p>
</form>
</body>
</html>
?>
2de gedeelte word aangeroepen na de submit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
include 'inf.php';
$omschrijving2=$_POST['omschrijving'];
$order = array("'",'"');
$replace = array(''','"');
$omschrijving = str_replace($order, $replace, $omschrijving2);
mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "INSERT INTO filmsgezien VALUES ('','$naam','$jaartal','$categorie','$beoordeling','$extrainfo','$h','$datum','$cover','$omschrijving','$tr')";
mysql_query($query);
mysql_close();
echo '<BR><BR><BR>Toegevoegd<br><br>';
// sluiten php
</form></td>
<td width="341"><p align="center"> </p>
<p align="center"> </p>
<p align="center">Bij toevoeging telling. Niet vergeten</p>
<form action="index2.php?p=countinvoer" method="post">
<p align="center"> Telling:
<select name="filmstellensub" size="1" id="filmstellensub">
<option selected>-1</option>
<option>+1</option>
</select>
<input type="submit" class="buttondgreen" value="Telling D" />
</p>
</form></td>
</tr>
</table>
?>
include 'inf.php';
$omschrijving2=$_POST['omschrijving'];
$order = array("'",'"');
$replace = array(''','"');
$omschrijving = str_replace($order, $replace, $omschrijving2);
mysql_connect($host,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "INSERT INTO filmsgezien VALUES ('','$naam','$jaartal','$categorie','$beoordeling','$extrainfo','$h','$datum','$cover','$omschrijving','$tr')";
mysql_query($query);
mysql_close();
echo '<BR><BR><BR>Toegevoegd<br><br>';
// sluiten php
</form></td>
<td width="341"><p align="center"> </p>
<p align="center"> </p>
<p align="center">Bij toevoeging telling. Niet vergeten</p>
<form action="index2.php?p=countinvoer" method="post">
<p align="center"> Telling:
<select name="filmstellensub" size="1" id="filmstellensub">
<option selected>-1</option>
<option>+1</option>
</select>
<input type="submit" class="buttondgreen" value="Telling D" />
</p>
</form></td>
</tr>
</table>
?>
als ik dit niet toevoeg heb ik het probleem dat de php totaal niet word doorgevoerd
en kwam ik tot de conclusie dat dit door de ' komt. nu kan ik de sql eigenschappen wel aanpassen
maar dan los ik nog steeds niet het probleem om.
ps: met het onderstaande misschien zit mijn probleem elders
Code (php)
Gewijzigd op 13/10/2013 02:55:06 door space gremlin
Dennis WhoCares op 12/10/2013 23:04:26:
je invoer escapen ?
met mysqli_real_escape_string()
met mysqli_real_escape_string()
Gebruik geen mysql_ maar mysqli_.
En gebruik dan gewoon mysqli_real_escape_string().
Gewijzigd op 13/10/2013 10:43:09 door - SanThe -
Ik ga maar weer aan de slag want ik zie dat ik weer heel veel moet aanpassen.