Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 656
Sliter litt med sammenlikning av stringer i SQL.

Har et problem når jeg sammenlikner bokstaver som e ë è é etc.
Får samme resultat om jeg kjører det fra phpmyadmin kontrollpanelet, eller i phpsidene.
Får svar at både e, é, ê etc er samme bokstav.
Bruker for øyeblikket utf8_general_ci, men har forsøkt med utf8_unicode_ci

Kode

    $ch_loc = $_REQUEST['chloc'];
    $ch_name = ucfirst(strtolower($_REQUEST['chname']));
    $ch_realm = $_REQUEST['chrealm'];
    if ((strpos($ch_realm, ' ')) === false) {
        $ch_realm = ucfirst(strtolower($ch_realm));
    } else {
        list($part1, $part2) = explode(" ", $ch_realm);
        $part1 = ucfirst(strtolower($part1));
        $part2 = ucfirst(strtolower($part2));
        $ch_realm = $part1.' '.$part2;
    }
    include './dbopen.php';
    $query = "SELECT c_name, c_server, c_eu_us FROM $name WHERE c_name = '$ch_name' and c_server = '$ch_server' and c_eu_us = '$ch_loc'";
    $result = mysqli_query($connect, $query);
    $cnt = mysqli_num_rows($result);
    include './dbclose.php';
    if ($cnt >= 1) {
        $c_error = 'exists';
    }
dbopen.php:

Kode

    $db_connect_user='*****';
    $db_connect_pass='*****';
    $db_connect_name='********';
    $db_connect_host='*******';
    $connect = mysqli_connect($db_connect_host, $db_connect_user, $db_connect_pass);
    mysqli_select_db($connect, $db_connect_name);
    mysqli_set_charset($connect, 'utf8');
    $db_selected = mysqli_select_db($connect, $db_connect_name);
    $set = "SET NAMES utf8";
    mysqli_query($connect, $set);
Standar DB instillinger er satt til
MySQL-tegnsett: UTF-8 Unicode (utf8)
Kollasjon av MySQL-oppkobling: utf8_unicode_ci

Og når tabellene det gjelder blir opprettet kjøres (utdrag):

Kode

c_name VARCHAR( 25 ) CHARACTER SET utf8 COLLATE  utf8_unicode_ci NOT NULL

Er det noen som har en løsning / idé for å få e != é && ë != è ?


Nettsiden dette blir brukt på er oppe å kjører, er noe jeg har satt opp for å lære meg mer om webutvikling (learning by doing).
>Klikk<.
Fungerer, men er endel feil fortsatt. Passord blir behandlet av sha1 og saltet md5, så burde være sikkert også..
Sist endret av Lanjelin; 8. juni 2010 kl. 11:11.
By default så er ikke sammenligning med mysql-queries i MySQL engang case-sensitive. Mulig du kan bruke noe av dette? http://www.codingforums.com/showthread.php?t=152606 ved å bruke strcmp() får de hvertfall sammenligningen case-sensitive, så kanskje den skiller på e ë è é etc. da også?
Evetuellt strnatcmp().
1d8+5+4d6
Lanjelin's Avatar
Trådstarter Donor
Sitat av Toak Vis innlegg
By default så er ikke sammenligning med mysql-queries i MySQL engang case-sensitive. Mulig du kan bruke noe av dette? http://www.codingforums.com/showthread.php?t=152606 ved å bruke strcmp() får de hvertfall sammenligningen case-sensitive, så kanskje den skiller på e ë è é etc. da også?
Vis hele sitatet...
Konklusjonen på den siden var at strcmp() var case insensitive..
Sitat av steinarlima
Evetuellt strnatcmp().
Vis hele sitatet...
strnatcmp() er for php-siden..

Ser ut til at å sette alt til bineært vil fungere..

Kode

$query = "SELECT c_name, c_server, c_eu_us FROM $name WHERE BINARY(c_name) = BINARY('$ch_name') and BINARY(c_server) = BINARY('$ch_server') and c_eu_us = '$ch_loc'";
Slik som ble nevnt i tråden Toak linket til.. KP under tvil