Rare tekens in select query geeft problemen
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
Backtics horen niet in een query.
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
}
?>
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;
?>
Het vreemde is dat hij bij een result met geen 'rare' tekens wel meerdere resultaten laat zien..
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.