PHP, Oracle en GUID als parameter

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleempje met het gebruik van een GUID in php.
Zodra ik een GUID als parameter meegeef aan de functie ‘SECURITY.isvalidlicencekey’ krijg ik een error. de functie 'SECURITY.isvalidlicencekey' is een Oracle functie.

ORA-06550: Regel 1, kolom 51: PLS-00103: Symbool "{" aangetroffen terwijl een van de volgende werd verwacht: ( ) - + case mod new not null others <een ID> <een scheidingsteken-ID blablabla

Wijzig ik de variabele $web_sec_key in bijvoorbeeld ‘12345’ dan werkt de functie wel correct :)

Mijn app_config.php
$web_sec_key = "{466CBC3D-4C0E-956A-E040-0007F01005AD5}";

include 'app_config.php';
$conn = oci_connect($dbuser, $dbpassword, $dbname);
$s = oci_parse($conn, "begin :bv := SECURITY.isvalidlicencekey($web_sec_key); end;");
...
...
...

Ik heb een vaag vermoeden dat het door de accolades en min tekens komt die om de GUID staan?

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Verwijderd schreef op dinsdag 19 februari 2008 @ 11:06:
Ik heb een vaag vermoeden dat het door de accolades en min tekens komt die om de GUID staan?
Heb je dat dan ook al geprobeerd? Waarom bevat je GUID accolades? Afaik is een GUID iets als 466CBC3D-4C0E-956A-E040-0007F01005AD5, zonder accolades ;)

Verder gebruik je een dubbel quoted string met een variabele erin. Je kan voor de overzichtelijkheid beter je string concatten :)
PHP:
1
2
3
4
$web_sec_key = "466CBC3D-4C0E-956A-E040-0007F01005AD5";
$parse_string = "begin :bv := SECURITY.isvalidlicencekey(" . $web_sec_key . "); end;";
$conn = oci_connect( $dbuser, $dbpassword, $dbname );
$s = oci_parse( $conn, $parse_string );
Of je kan het oplossen met een formatted print functie. Dat vinden sommigen netter / overzichtelijker:
PHP:
1
$string = sprintf( "begin :bv := SECURITY.isvalidlicencekey(%s); end;", $key);

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Waarschijnlijk stating the obvious, maar heb je 't al zonder accolades geprobeerd ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jep, zonder accolades klapt de functie ook :(

Zonder accolades krijg ik wel een andere foutmelding ..
ORA-06550: Regel 1, kolom 44: PLS-00103: Symbool "CBC3D" aangetroffen terwijl een van de volgende werd verwacht: ) ,

$web_sec_key = "466CBC3D-4C0E-956A-E040-0007F01005AD5";

[ Voor 73% gewijzigd door Verwijderd op 19-02-2008 11:20 ]


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 18:07
Ik denk dat die oracle functieaanroep de GUID tussen single quotes wil hebben.
PHP:
1
$s = oci_parse($conn, "begin :bv := SECURITY.isvalidlicencekey('".$web_sec_key."'); end;");

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
rutgerw, je bent briljant ;)
Thanks!
Pagina: 1