Returnerer intet resultat, hvis der er danske tegn i mit query
Jeg arbejder på min lokale PC (xp sp2) der kører PHP Version 5.2.1 under IIS. Umiddelbart fungerer det jo fint, men jeg sidder og laver et DVD website (jeg er RIGTIG newbie).
Den har forbundet fint til databasen, jeg kan hente records og jeg kan søge. MEN hvis der er Æ Ø eller Å i min søgestreng, så finder den intet. Den fanger det fint, jeg print($query) og det ser rigtigt ud, hvis jeg kører det query i MySQL Query analyzer returnerer den også 11 records. ??
Der må være en indstilling i php.ini som er forkert, men hvad skal jeg gøre.
Jeg sender kun et felt, selve søgeordet. Det genererer så noget SQl - eks: "SELECT md5(id) as id, title, descr, id as id2 FROM movies WHERE title LIKE '%Brødrene Grimm%' ORDER BY title ASC;" - denne her vil returnere 0 rows hvis kørt igennem PHP, men hvis nu jeg kopierer samme query til MySQL Query Analyzer, returnerer den 1 record. Hvis bare jeg søger på "SELECT md5(id) as id, title, descr, id as id2 FROM movies WHERE title LIKE '%ø%' ORDER BY title ASC;" så får jeg i PHP 0, men fra mysql 11 !?!?
Jeg er som sagt virkelig newbie, men det her er da underligt. BTW - Hvis jeg nu søger på noget uden æøå i, så returnerer PHP nøjagtigt det samme resultat som mysql gør fra QA !
jamen det er da også ok. Ville bare lige checke hvilken collation du havde på din tabel. Og lader til at du har utf8.
Det fører tilbage til php delen. Kan du vise den kode der sender query? Altså et større udsnit af den. Specielt der hvor du henter din information fra din $_GET eller $_POST alt efter hvad du bruger.
Ja det sjove er... det er et PHP kursus - instruktøren ser bare underligt på mig når jeg forklarer ÆØÅ problematikken
function getMovieSearch($skey) { $query = "SELECT md5(id) as id, title, descr, id as id2 FROM movies WHERE title LIKE '%$skey%' COLLATE latin1_danish_ci ORDER BY title ASC;"; print $query; return mysql_query($query); }
self. function getMovieSearch($skey) { $query = "SELECT md5(id) as id, title, descr, id as id2 FROM movies WHERE title LIKE '%$skey%' ORDER BY title ASC;"; print $query; return mysql_query($query); }
jeps, men det jeg har brug for er der hvor du smider værdier over i $skey. Og behandlingen af den variabel, helt fra når den kommer fra $_GET eller $_POST
ALtså jeg har en index.php med en form, der submitter til $_SELF og så en include "search.php" : <?php $res = $objDB -> getMovieSearch($skey); $num = mysql_num_rows($res); print "<table border=0 width=100% cellspacing=0 cellpadding=0><tr><td align=center colspan=2>Your search for <strong>". $skey ."</strong> returned ". $num ." results</td></tr><tr bgcolor='#cccccc'><td align=center>Title</td></tr>";
Jeg er ikke super stærk i php.ini. Faktisk slet ikke heh.
Men jeg har lige kigget i min php ini og jeg har disse linier:
; As of 4.0b4, PHP always outputs a character encoding by default in ; the Content-type: header. To disable sending of the charset, simply ; set it to be empty. ; ; PHP's built-in default is text/html default_mimetype = "text/html" ;default_charset = "iso-8859-1"
det ved jeg ikke om hjælper dig?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.