Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP/ORACLE] hoofdlettergevoelig

Pagina: 1
Acties:
  • 268 views

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met een simpel online telefoonboek voor ons bedrijf, nu loop ik hier tegen een klein probleempje aan..

Na het zoeken op een naam geschreven als bijv.: pietje geeft hij geen resultaten weer.
Na het zoeken op een naam geschreven als bijv.: Pietje geeft hij wel resultaten weer.
code:
1
$query = "SELECT * FROM tblTELNUM Where TELEFOON='".$tel."' OR MOBIEL='".$mob."' OR LOKATIE='".$afd."' OR VOORNAAM='".$zst."' OR ACHTERNAAM ='".$zst."'";

alle variabelen worden met behulp van $_GET uit de URL 'gevist'.

Er draait een Oracle database achter en PHP 5.2.5 is geinstalleerd
Wat ik op internet heb gevonden is UPPER() en LOWER() maar in de database staat het overal als Pietje, heb natuurlijk weinig zin om 500+ records aan te passen :P:)

MvG,
Robert

Verwijderd

Hoofdletter gevoeligheid is in mysql een optie zover ik weet. En voor PHP is dit OS afhankelijk, in windows is dit niet en op freeBSD wel.

Probeer altijd consistent te blijven ivm portability.

Verwijderd

Topicstarter
PHP draait hier locaal op Windows, nu op Apache, in toekomst op IIS.
Ik draai helaas geen mysql, maar Oracle. Heb hiervan geen instelling kunnen vinden.

En niet alleen ik moet dan consistent blijven, maar de ene gebruiker gebruikt hoofdletters, de andere niet.

[ Voor 26% gewijzigd door Verwijderd op 03-04-2008 13:36 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op donderdag 03 april 2008 @ 13:29:
Probeer altijd consistent te blijven ivm portability.
Op zich een goed advies, alleen is het niet van toepassing op dit probleem. De string "Pietje" heeft niets met het fs te maken. :P

Zoek eens op andere string vergelijking functies, of case insensitve collation, of hoe Oracle dat ook mag noemen. Hoewel niet de mooiste oplossing kan je verder natuurlijk ook altijd beide kanten van een vergelijking langs functies als UPPER() halen, of met 1 enkel update statement al die waardes aanpassen. ;)

{signature}


Verwijderd

Topicstarter
ik heb al een oplossing gevonden. Ik laat in de query zowel de waarde als de uitvoer in lowercase vergelijken.
code:
1
$query = "SELECT * FROM tblTELNUM Where TELEFOON='".$tel."' OR MOBIEL='".$mob."' OR LOKATIE='".$afd."' OR VOORNAAM='".$zst."' OR LOWER(ACHTERNAAM) = LOWER('".$zst."')";

Dit werkt prima en ik ben weer uit de brand geholpen :)

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Even een zoektocht via google op 'Oracle case sensitive' leverde bij de eerste hit al het gewenste resultaat op.
Je moet eerst je sessie context op case insentsitive zetten en daarna kun je de zoek opdracht uitvoeren

SQL:
1
2
alter session set NLS_COMP=ANSI;
select * from tblTELNUM where ACHTERNAAM='joe' and VOORNAAM='john';

Als je NLS_COMP op BINARY zet is hij weer case sensitive.

If it isn't broken, fix it until it is..


  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 01-11 22:03

leuk_he

1. Controleer de kabel!

Als voornaam ALTIJD met een hoofdletter begint:

"SELECT * FROM tblTELNUM Where TELEFOON='".$tel." ...VOORNAAM='InitCap(".$zst."')

Hoofdletters onbekend. (let op, er wordt meestal geen index meer gebruikt, tenzij je een functie based index hebt)

"SELECT * FROM tblTELNUM Where ...UPPER(VOORNAAM)=UPPER(".$zst."')

Klinkt als.

"SELECT * FROM tblTELNUM Where ...Soundex(VOORNAAM)=Soundex(".$zst."')


Database onafhankelijkheid bereik je door je db access methoden in een aparte module te zetten. Anders zou het jammer zijn als je een "dure" oracle databeest hebt maar niet van de extensies gebruik kunt maken.

(waarbij ik even ervan uit ga dat je bij uit url vissen het een en ander hufter proof hebt gemaakt)

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 20:31

MueR

Admin Devschuur® & Discord

is niet lief

Denk dat de TS eerder gebaat is bij het doorlezen van wat documentatie omtrent Oracle databases.

Anyone who gets in between me and my morning coffee should be insecure.


  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Precies.. en vergeet RobIII in "[PHP] in combinatie met oracle" en de mail die je hebt ontvangen niet.

[ Voor 14% gewijzigd door Creepy op 03-04-2008 14:33 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.