Rare tekens in select query geeft problemen
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
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
Gesponsorde koppelingen:
mysql_real_escape_string() is genoeg.
Backtics horen niet in een query.
Backtics horen niet in een query.
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:
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)
1
2
3
4
2
3
4
<?php
$var = mysql_real_escape_string($var);
$query = "SELECT uid FROM reizen WHERE area = '".$var."'";
?>
$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)
1
2
3
4
5
6
7
8
9
10
11
12
13
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
}
?>
$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
}
?>
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'
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
En als je die query in phpMyAdmin uitvoert krijg je wel de juiste output?
Raar genoeg krijg ik dan wel 4 resultaten..
Plaats eens meer exacte code (hou het wel relevant). Misschien komen we er dan beter uit.
Code (php)
1
2
3
4
5
6
7
8
9
10
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;
?>
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;
?>
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..
Het vreemde is dat hij bij een result met geen 'rare' tekens wel meerdere resultaten laat zien..
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
of
Bij die echo worden de bijzondere tekens wel correct weergegeven? Wat is de 'collatie'(kijk in phpmyadmin) van de tabel?
of
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
Opgelost door na de connectie de volgende query te doen: set names utf_8.



