MySQL Like sensibilitate majuscule si litere mici

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
alexinio3d
Mesaje:96

MySQL Like sensibilitate majuscule si litere mici

Salutare.
De curand am terminat de facut un site cu conectare la baza de date prin mysqli unde am intampinat o problema.
Cand caut un cuvant in baza de date cu operatorul LIKE imi cauta exact dupa ceea ce am scris, adica eu daca caut cuvantul carte in baza de date si-mi gaseste in tabel sub forma Carte atunci nu mi-l ia ca bun.

Interogarea am facuto cu in felul urmator:

Cod: Selectaţi tot

$sql = $connect->query("SELECT * FROM `tabel` WHERE `coloana` LIKE '%carte%") or trigger_error($sql->error, E_USER_ERROR);
if($sql->num_rows > 0){
     echo $sql->num_rows;
}else{
     echo "Nu s-a gasit nici un rezultat";
}
 
Oare care ar fii problema si cum as putea rezolva tot baiul acesta?
Siteuri create / configurate de mine :
SilvoProject.Ro ( Magazin Online ) : SilvoProject.Ro
TreiSute.Ro ( Comunitate de gaming ) : TreiSute.Ro

MarPlo Mesaje:4343
Salut
Preblema nu e de la MySQLi, ci de la baza de date MySQL. In mysql 5.5 , operatorul LIKE e fara sensibilitate la majuscule si litere mici. Probabil e o versiune ma veche de 5.5.
In cazul asta, tabelele trebuie create adaugand instructiunea: CHARACTER SET utf8 COLLATE utf8_general_ci

Cod: Selectaţi tot

CREATE TABLE nume_tabel (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, coloana VARCHAR(2550) NOT NULL  DEFAULT 0) CHARACTER SET utf8 COLLATE utf8_general_ci
Sau adaugi: COLLATE utf8_general_ci direct in interogarea Select.

Cod: Selectaţi tot

$sql = $connect->query("SELECT * FROM `tabel` WHERE `coloana` LIKE '%carte%' COLLATE utf8_general_ci") or trigger_error($sql->error, E_USER_ERROR);
 
- Sufixul "_ci" e pentru Case-Insensiitive.