PHP - Problemas con PDO y PHP

 
Vista:
sin imagen de perfil

Problemas con PDO y PHP

Publicado por orion (11 intervenciones) el 27/04/2017 15:13:16
Muy buenos dias a tod@s.

necesito conectarme a una db oracle !
para ello estoy usando el siguiente codigo!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    class ConnectionDBTOAD{
    private static $conn=null;
    private static $server = "mi host";
    private static $db_username = "mi usuario";
    private static $db_password = "contraseña";
    private static $service_name = "serviciox";
    private static $sid   = "serviciox";
    private static $port  = 1521;
    private static $dbtns = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = $server)(PORT = $port)) (CONNECT_DATA = (SERVICE_NAME = $service_name) (SID = $sid)))";
	public static function OpenBDTOAD(){
		if (self::$conn==null) {
			try{
				self::$conn = new PDO("oci:dbname=" . self::$dbtns . ";charset=utf8", self::$db_username, self::$db_password, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));
			}
			catch (PDOException $e) {
				echo $e->getMessage();
			}
			return self::$conn;
		}
	}
	public static function CloseBDTOAD(){
		self::$conn=null;
	}}?>


sin embargo , en el navegador me sale el mensaje

1
Fatal error: Constant expression contains invalid operations in C:\xampp\htdocs\ciclo\model\connectiondt.php on line 10


es decir, el error esta justo en esta linea

1
private static $dbtns = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = $server)(PORT = $port)) (CONNECT_DATA = (SERVICE_NAME = $service_name) (SID = $sid)))";

de igual manera ya he modificado el archivo php.ini habilitando
extension=php_pdo_oci.dll
tambien he intentado colocar la conexion fuera de una clase y me sale el mismo error !

Espero alguien tenga conocimiento sobre que pasa y pueda ayudarme.
De antemano muchas gracias!


Codigo
visual1

Respuesta en navegador
visual2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problemas con PDO y PHP

Publicado por xve (6935 intervenciones) el 27/04/2017 17:59:25
Hola Orion, haz un simple prueba... prueba a poner la linea así:

1
private static $dbtns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = '.$server.')(PORT = '.$port.')) (CONNECT_DATA = (SERVICE_NAME = '.$service_name.') (SID = '.$sid.')))';

coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Problemas con PDO y PHP

Publicado por kip (877 intervenciones) el 27/04/2017 18:08:06
Hola, Xve creo que el problema no es la concatenacion de variables, sino mas bien la interpretacion de estas en aquel contexto de declaracion de la propiedad estatica de la clase, parece que quiere tomar los valores de las propiedades estatics que declara en lineas anteriores si te fijas y creo que no podra hacerlo ni de esta forma:

1
private static $dbtns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ' . self::$server .....

Lo mejor es que dentro de algun metodo le de valor a aquella propiedad, algo asi tal vez:

1
2
public static function OpenBDTOAD() {
    self::$dbtns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ' . self::$server.....

De esa forma podra acceder a las demas propiedades estaticas que ya tendran un valor y le asignara el valor adecuado a la propiedad $dbtns.

Eso si declarando $dbtns con un valor vacio en lo posible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Problemas con PDO y PHP

Publicado por orion (11 intervenciones) el 27/04/2017 18:50:30
mira la ultima respuesta y gracias por comentar !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problemas con PDO y PHP

Publicado por xve (6935 intervenciones) el 27/04/2017 20:20:06
Cierto Kip!!! tienes razón!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con PDO y PHP

Publicado por orion (11 intervenciones) el 27/04/2017 18:50:42
mira la ultima respuesta y gracias por comentar !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con PDO y PHP

Publicado por orion (11 intervenciones) el 27/04/2017 18:57:03
Gracias por sus respuestas!

Por una parte ya logre quitar el error ! pero por otra parte ya me sale otro error!

1
2
could not find driver
Fatal error: Uncaught Error: Call to a member function setAttribute() on null in C:\xampp\htdocs\ciclo\model\model.gestiones.php:19 Stack trace: #0 C:\xampp\htdocs\ciclo\view\index.php(12): Gestiones::consulta() #1 {main} thrown in C:\xampp\htdocs\ciclo\model\model.gestiones.php on line 19

como dije en la pregunta, ya configure el php.ini quitandole el punto y coma ( ; ) de extension=php_pdo_oci.dll

pero no se que mas quiere de mi ! jeje ! alguna idea de lo que pasa ?
lo curioso es que la clase en model.gestiones.php no se ha modificado , de hecho es la que uso en conexiones con mysql !


Codigo correcto en clase conexion
visual2


Codigo que segun php tiene error
visual1


Error En Pantalla
visual3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar