PHP - Problema al conectar a Oracle

 
Vista:
sin imagen de perfil

Problema al conectar a Oracle

Publicado por marcos (6 intervenciones) el 10/03/2017 19:37:38
Buenas. Estoy intentado hacer una clase conexion donde conecto con oracle. El problema es que cuando llamo a la funcion conectar, me devuelve un error

Warning: oci_parse() expects parameter 1 to be resource, null given

pongo el codigo para ver si me podeis indicar donde puede estar el error, ya que no logro visualizarlo.

la class conexion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
class Database {
	public static $con;
 
	function connect(){
		$marcos = '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mberges)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = mgold)
    )
  )';
		$con = oci_connect('mg', '*****', $marcos);
		if (!$con) {
       $e = oci_error();
       trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
		return $con;
	}
 
}
}
?>

La clase oracle donde llamo a conexion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
include './conexion.php';
$base = new Database();
$con = $base->connect();
$query = "SELECT VA AQUI";
$stid = oci_parse($con, $query);
oci_execute($stid);
?>
 <div class="row">
 <div class="col-md-6">
   <div class="panel panel-default">
   <div class="panel-heading clearfix">
   <div class="pull-right">
   <button id="boton" class="btn btn-success"> Exportar
   <span class="glyphicon glyphicon-save"></span>
   </button>
   </div>
   </div>
   <table id="tabla" class="table table-hover">
   <thead>
   <tr>
    <th>Nombre</th>
    <th>Colegiado</th>
    </tr>
    </thead>
    <?php while (($row = oci_fetch_array($stid, OCI_NUM)) != false)  { ?>
    <tbody>
    <tr class="info">
        <td><?php echo $row[0] ?></td>
        <td><?php echo $row[1] ?></td>
    </tr>
    </tbody>
    <?php } ?>
 
 
   </table>
   </div>
  </div>
  </div>

Espero vuestra ayuda.

Gracias
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

Problema al conectar a Oracle

Publicado por xve (6935 intervenciones) el 11/03/2017 09:45:15
Hola Marcos, el problema puede ser que la variable $con tenga el valor false... por el error, me da la sensación de que $base->connect(); devuelve false, en vez de un objeto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema al conectar a Oracle

Publicado por Marcos (6 intervenciones) el 11/03/2017 11:29:26
Buenas. Gracias por la respuesta. Aún que no sé cómo debo resolverlo. He probado varías maneras pero no logró que devuelva datos.
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

Problema al conectar a Oracle

Publicado por kip (877 intervenciones) el 11/03/2017 19:21:06
Hola, tal como dice Xve quizas el problema esta en el return $con, ya que si te fijas lo colocas dentro del bloque donde evaluas si este es false y solo sera false si falla la conexion, intenta modificando tu clase Database de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class Database {
 
    public static $con;
 
    public function connect() {
        $marcos = ' (DESCRIPTION =
                        (ADDRESS = (PROTOCOL = TCP)(HOST = mberges)(PORT = 1521))
                        (CONNECT_DATA =
                            (SERVER = DEDICATED)
                            (SERVICE_NAME = mgold)
                        )
                    )';
        $con = oci_connect('mg', '*****', $marcos);
        if ( ! $con) {
            $e = oci_error();
            trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
            die();
        }
        return $con;
    }
 
}

De esta forma tal vez te muestre el error en concreto que ocurre y porque quizas no puedes conectarte a la base, pruebalo y nos avisas que te muestra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema al conectar a Oracle

Publicado por Marcos (6 intervenciones) el 13/03/2017 21:52:02
Gracias por la respuesta. Efectivamente era eso. He movido el return fuera y ha funcionado perfectamente.
Gracias de nuevo
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