Rare tekens in select query geeft problemen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer Industriële Automatiseri

Raster levert slimme industriële automatiseringsoplossingen aan nationale en internationale opdrachtgevers voor wie procesveiligheid van groot belang is. We zijn sterk in spraakmakende one-off projecten in de productie- en procesautomatisering waarbij extreme engineering een terugkerend thema is. Daarbij kun je denken aan: Het veilig en duurzaam ontwerpen, plaatsen én weer opruimen van olie- en gas- productieplatformen De transformatie van de olie- en gasmarkt naar windenergie op zee Het oplossen van lokale parkeerproblematiek in dichtbevolkte steden Het cyber secure maken van kritische industriële productieomgevingen Het op afstand veilig produceren door onbemande platformen op de Noordzee Het succesvol lanceren van satellieten in de

Bekijk vacature »

M Puts

M Puts

22/06/2010 19:26:12
Quote Anchor link
Hallo,

Ik heb de volgende query:

SELECT `uid` FROM `reizen` WHERE `area` = '".$var."'"

$var is als volgt:

$var = mysql_real_escape_string($_GET['var']);
$var = htmlspecialchars($var);

Deze laatste heb ik toegevoegd omdat ik dacht dat het zou helpen..

Het probleem is nu als ik een naam heb zoals Sölden krijg ik geen resultaten (mysql_num_rows) geeft 0 aan.
Gebruik ik echter een naam zoals Fieberbrunn dan vind ik wel resultaten..
Phpmyadmin geeft echter bij Sölden wel resultaat..
Het ligt dus echt aan mijn query..

Iemand een idee?


Mark
 
PHP hulp

PHP hulp

07/12/2021 13:51:23
 
- SanThe -

- SanThe -

22/06/2010 19:30:08
Quote Anchor link
mysql_real_escape_string() is genoeg.
Backtics horen niet in een query.
 
Jesper Diovo

Jesper Diovo

22/06/2010 19:32:18
Quote Anchor link
Ja. Je query is niet in het juiste formaat opgebouwd. Tegenwoordig maken wij helemaal geen gebruik meer van backtics (`). Die zijn nergens voor nodig en veroorzaken juist problemen ;-). Daarnaast heb ik het idee dat je niet juist de variabele buiten de quotes haalt. We doen dit op de volgende manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= mysql_real_escape_string($var);
$query = "SELECT uid FROM reizen WHERE area = '".$var."'";
?>


Dat moet voldoende zijn. Die htmlspecialchars() is nergens voor nodig, en zet volgens mij de ö juist om in vreemde tekens. Misschien moet je eens kijken wat je query werkelijk is voordat je hem uitvoert door hem te echo'en.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$var
= mysql_real_escape_string($var);
$query = "SELECT uid FROM reizen WHERE area = '".$var."'";
echo $query;

$result = mysql_query($query);

if($result) {
// query gelukt
} else {
// query mislukt
}
?>
 
M Puts

M Puts

22/06/2010 19:32:51
Quote Anchor link
Helaas werkt het nog niet, htmlspecialchars en de backtics had ik erin gezet omdat ik hoopte dat het dan zou werken.

Ook de andere oplossing werkt niet.
De query word als volgt weergegeven:
SELECT uid FROM reizen WHERE area = 'Sölden'
Gewijzigd op 22/06/2010 19:36:29 door M Puts
 
Jesper Diovo

Jesper Diovo

22/06/2010 19:42:33
Quote Anchor link
En als je die query in phpMyAdmin uitvoert krijg je wel de juiste output?
 
M Puts

M Puts

22/06/2010 19:45:48
Quote Anchor link
Raar genoeg krijg ik dan wel 4 resultaten..
 
Jesper Diovo

Jesper Diovo

22/06/2010 19:47:31
Quote Anchor link
Plaats eens meer exacte code (hou het wel relevant). Misschien komen we er dan beter uit.
 
M Puts

M Puts

22/06/2010 19:56:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

include('header.php');
$var = mysql_real_escape_string($_GET['var']);
$query = "SELECT uid FROM reizen WHERE area = '".$var."'";
echo $query;
$slct = mysql_query($query);
$rows = mysql_num_rows($slct);
echo $rows;
?>
 
Ivo K

Ivo K

22/06/2010 20:16:40
Quote Anchor link
Edit:

Sorry, zat te slapen...
Gewijzigd op 22/06/2010 20:19:02 door Ivo K
 
M Puts

M Puts

22/06/2010 20:21:57
Quote Anchor link
Deze query word alleen gebruikt om te kijken hoeveel pagina's er aangemaakt moeten worden. Ik heb een andere query die de rest ophaalt (idd met een while).

Het vreemde is dat hij bij een result met geen 'rare' tekens wel meerdere resultaten laat zien..
 
Piet Verhagen

Piet Verhagen

22/06/2010 23:11:58
Quote Anchor link
Dit is een encoding probleem denk ik. Gegevens in database is Latin1, variabele $_GET['var'] komt binnen als UTF8 of iets dergelijks ... Probeer eens wat met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$var = mysql_real_escape_string(utf8_decode($_GET['var']));

of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$var = mysql_real_escape_string(utf8_encode($_GET['var']));

Bij die echo worden de bijzondere tekens wel correct weergegeven? Wat is de 'collatie'(kijk in phpmyadmin) van de tabel?
Gewijzigd op 22/06/2010 23:16:46 door Piet Verhagen
 
M Puts

M Puts

23/06/2010 22:09:42
Quote Anchor link
Opgelost door na de connectie de volgende query te doen: set names utf_8.
 



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.