+ teken in mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan

Stefan

29/12/2008 18:18:00
Quote Anchor link
Beste mensen,

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?
 
PHP hulp

PHP hulp

25/12/2024 07:59:02
 
Joren de Wit

Joren de Wit

29/12/2008 18:20:00
Quote Anchor link
Stefan schreef op 29.12.2008 18:18:
Nu als ik die wil oproepen reageert hij er niet op.
Wat bedoel je hiermee?
 
Frank -

Frank -

29/12/2008 18:21:00
Quote Anchor link
Dan heb je onttwijfeld een fout in je code zitten, een + heeft nog nooit een probleem opgeleverd en zal dat ook nu niet doen.

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.
 
/home/joost

/home/joost

29/12/2008 18:22:00
Quote Anchor link
Is de charset van de pagina+mysql database hetzelfde ??

Je kan ook dit doen: je string $row["output"]=str_replace("+", "+");


mvg Joost van der Meijden
 
Stefan

Stefan

29/12/2008 18:23:00
Quote Anchor link
Ik heb bijvoorbeeld

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.
 
Joren de Wit

Joren de Wit

29/12/2008 18:24:00
Quote Anchor link
Laat eens wat code zien waarmee je de gegevens uit je database selecteert?
 
Stefan

Stefan

29/12/2008 18:28:00
Quote Anchor link
if (!empty($_GET['id'])) {
$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
 
Joren de Wit

Joren de Wit

29/12/2008 18:31:00
Quote Anchor link
En waar is de beveiliging en foutafhandeling gebleven? Zo mis ik bijvoorbeeld de functie mysql_real_esacpe_string() om de GET variabelen te beveiligen voordat je ze in de query gebruikt en verder mis ik de foutafhandeling van de query. Jij controleert nergens of die wel gelukt is?

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
 
Douwe

Douwe

29/12/2008 18:37:00
Quote Anchor link
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+'.
 
Stefan

Stefan

29/12/2008 18:37:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
    }
}

?>


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
 
Frank -

Frank -

29/12/2008 18:40:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

29/12/2008 18:42:00
Quote Anchor link
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...
 
Stefan

Stefan

29/12/2008 18:44:00
Quote Anchor link
idd mijn + vervalt als ik deze Echo.

Zou die url_decode en encode misschien wat toegelicht kunnen worden?
Bij voorbaat dank.
 
Joren de Wit

Joren de Wit

29/12/2008 18:47:00
Quote Anchor link
urlencode
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
 
Gustaaf

Gustaaf

29/12/2008 18:49:00
Quote Anchor link
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 ...
Gewijzigd op 01/01/1970 01:00:00 door Gustaaf
 
Frank -

Frank -

29/12/2008 18:51:00
Quote Anchor link
Gustaaf schreef op 29.12.2008 18:49:
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 ...

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.
 
Stefan

Stefan

29/12/2008 18:52:00
Quote Anchor link
als ik dit toepas krijg ik

Socket+AM2+

Me + is terug maar me spatie wordt ook een + en dan krijg ik ook geen resultaat.
 
Frank -

Frank -

29/12/2008 18:55:00
Quote Anchor link
Een + hoort dan ook niet als + in de url te staan... Wanneer dat wel het geval is, gebruik je blijkbaar geen urlencode().
 
Joren de Wit

Joren de Wit

29/12/2008 19:00:00
Quote Anchor link
Stefan schreef op 29.12.2008 18:52:
Me + is terug maar me spatie wordt ook een + en dan krijg ik ook geen resultaat.
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...
 
Stefan

Stefan

29/12/2008 19:04:00
Quote Anchor link
Had idd een foutje gemaakt
het werkt nu prima..
bedankt allemaal voor de snelle reacties.

weer wat geleerd :)
 
Klaasjan Boven

Klaasjan Boven

29/12/2008 19:30:00
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.