+ teken in mysql
Ik zit met het volgende probleem.
Ik heb een tekst in mysql opgeslagen met een + in.
Nu als ik die wil oproepen reageert hij er niet op. De rest wel, maar niet die met die + in.
Hoe kan ik dit oplossen?
Stefan schreef op 29.12.2008 18:18:
Wat bedoel je hiermee?Nu als ik die wil oproepen reageert hij er niet op.
Je gebruik een query om de data op te vragen, echo deze query even voordat je hem uitvoert en je weet exact hoe de query eruit ziet. Dan krijg je direct een idee waarom het fout gaat.
Doe je overigens wel iets aan foutafhandeling? En mysql_real_escape_string(), die gebruik je ook om variabelen op een veilige manier in je query te zetten?
Ps. Zonder code kunnen we alleen gaan raden wat er fout gaat, een beetje relevante code kan geen kwaad.
Je kan ook dit doen: je string $row["output"]=str_replace("+", "+");
mvg Joost van der Meijden
Socket AM2+
Deze krijg ik binnen via $_GET['id'];
En hiermee roep ik alles op van de groep Socket AM2+.
Bij de groep Socket AM2 gaat dit wel.
Dus met de + gaat het ergens niet goed.
Laat eens wat code zien waarmee je de gegevens uit je database selecteert?
$groep = $_GET['id'];
}
if (!empty($_GET['id1'])) {
$subgroep = $_GET['id1'];
$item = "SELECT * FROM Producten WHERE Productgroep = '".$groep."' AND Subgroep = '".$subgroep."'";
$resultaat_item = mysql_query($item);
while ($row = mysql_fetch_array($resultaat_item)) {
echo $row['naam'];
}
}
in de id1 komt een + in voor
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Kortom, er valt nog wel wat te verbeteren aan je code...
ps. Zie ook deze SQL beginnershandleiding voor voorbeelden van stukjes php code voor het selecteren uit een database...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Als je bestand.php?abc=abc+abc hebt, wordt die + overigens verzonden als spatie, jij krijgt dus 'Socket AM2 ' aan, in plaats van 'Socket AM2+'.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (!empty($_GET['id'])) {
$groep = mysql_real_escape_string($_GET['id']);
}
if (!empty($_GET['id1'])) {
$subgroep = mysql_real_escape_string($_GET['id1']);
$item = "SELECT * FROM Producten WHERE Productgroep = '".$groep."' AND Subgroep = '".$subgroep."'";
$resultaat_item = mysql_query($item);
while ($row = mysql_fetch_array($resultaat_item)) {
echo $row['naam']
}
if(!$resultaat_producten) {
echo '<b>Er is een fout opgetreden op deze pagina.</b>';
}
}
?>
if (!empty($_GET['id'])) {
$groep = mysql_real_escape_string($_GET['id']);
}
if (!empty($_GET['id1'])) {
$subgroep = mysql_real_escape_string($_GET['id1']);
$item = "SELECT * FROM Producten WHERE Productgroep = '".$groep."' AND Subgroep = '".$subgroep."'";
$resultaat_item = mysql_query($item);
while ($row = mysql_fetch_array($resultaat_item)) {
echo $row['naam']
}
if(!$resultaat_producten) {
echo '<b>Er is een fout opgetreden op deze pagina.</b>';
}
}
?>
Nog steeds krijg ik de waarde er niet uit.
Geeft geen fout aan.
Zowieso werkt de query wel met alle andere groepen
Hieronder is de url
id=Processors&id1=Socket%20AM2+
Gewijzigd op 01/01/1970 01:00:00 door Stefan
url_encode() en url_decode() zul je wel nodig hebben, een + mag niet als content in de url worden gezet. Dat is ook de reden dat het hier fout gaat, heeft niets met de database te maken.
Zie de reactie van Douwe, grote kans dat dat het probleem is. Echo dus $_GET['id1'] eens om te zien of die + er nog wel in staat...
Zou die url_decode en encode misschien wat toegelicht kunnen worden?
Bij voorbaat dank.
urlencode
urldecode
Genoeg toelichting lijkt me? Werking van de functies spreekt redelijk voor zich...
urldecode
Genoeg toelichting lijkt me? Werking van de functies spreekt redelijk voor zich...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dit probleem komt me bekend voor. Ook " en ' in zorgen voor moeilijkheden wanneer ik via php -mysql met flash communiceer.
Uit armoede sla ik + op als $43$ 43 is de Asc waarde van plus.
Hiermee is het mogelijk dit probleem op te lossen. Je moet wel een omvormer zetten bij het inlezen en bewaren.
Mogelijk bestaan er betere oplossingen ... maar dit werkt naar behoren ...
Gewijzigd op 01/01/1970 01:00:00 door Gustaaf
Gustaaf schreef op 29.12.2008 18:49:
Onzin, gebruik je de juiste encoding wanneer je met html bezig bent, je hoeft je data niet verknallen om het in de database op te slaan. Nergens voor nodig.Beste Stefan,
Dit probleem komt me bekend voor. Ook " en ' in zorgen voor moeilijkheden wanneer ik via php -mysql met flash communiceer.
Uit armoede sla ik + op als $43$ 43 is de Asc waarde van plus.
Hiermee is het mogelijk dit probleem op te lossen. Je moet wel een omvormer zetten bij het inlezen en bewaren.
Mogelijk bestaan er betere oplossingen ... maar dit werkt naar behoren ...
Dit probleem komt me bekend voor. Ook " en ' in zorgen voor moeilijkheden wanneer ik via php -mysql met flash communiceer.
Uit armoede sla ik + op als $43$ 43 is de Asc waarde van plus.
Hiermee is het mogelijk dit probleem op te lossen. Je moet wel een omvormer zetten bij het inlezen en bewaren.
Mogelijk bestaan er betere oplossingen ... maar dit werkt naar behoren ...
Socket+AM2+
Me + is terug maar me spatie wordt ook een + en dan krijg ik ook geen resultaat.
Een + hoort dan ook niet als + in de url te staan... Wanneer dat wel het geval is, gebruik je blijkbaar geen urlencode().
Stefan schreef op 29.12.2008 18:52:
De functie urlencode() gebruik je vóórdat je de string in een url zet. Vervolgens kun je de GET variabele weer ophalen en de geencodeerde gegevens met urldecode() weer terug halen...Me + is terug maar me spatie wordt ook een + en dan krijg ik ook geen resultaat.
het werkt nu prima..
bedankt allemaal voor de snelle reacties.
weer wat geleerd :)
overigens maak mijn database geen id's aan met een plusje erin. Ik zou een dergelijke database meteen een schop geven. Een id hoort, imo, een integer te zijn