estoy intentando hacer una aplicación con programación orientada a objetos y tengo un error que no entiendo, y que me está desquiciando
La aplicación genera informes sobre libros de una editorial. Para el proceso disponemos de una clase de conexión a la base de datos, clase conn, y otra para generar los informes, clase report. En medio del proceso tengo que comprobar que el título insertado no tiene ya un informe generado, así que creo una instancia de report, llamada $rpt, y comprobamos el título, con %rpt->checkTitulo().
Pues bien, el proceso se realiza casi correctamente en un servidor WindowsXP + MySQL 4.0.25-nt + PHP 5.0.5 (instalación estandard) PERO no puedo decir lo mismo cuando lo publico en un servidor Linux + MySQL 4.0.25-standard + PHP 4.4.2. En este último caso, cuando estoy comprobando el nombre de un nuevo libro 'parece colgarse' cuando tiene que hacer la conexión a la base de datos, línea
Código:
¿Por que puede ser esta diferencia? Está bien lo de intentar guardar en la propiedad de la clase, $conec, una instancia de la clase de conexión?$res = $this->conec->query($sql);
Código:
¿se debe hacer por valor o por referencia? La parte del fichero donde uso las clases es:$this->conec = &new conn;
Código:
El comienzo de la clase report() es:$rpt = new report(); // comprobamos el título if(!$tmp = $rpt->checkTitulo($_POST["tit"])) $extra = "?ch=0";
Código:
Parte del código de la clase conexión es:class report{ var $Id = 0; var $detail = false; var $Arr_error = array(); var $conec = ""; var $Debug; function report($id=""){ require_once("conn.php"); $this->conec = &new conn; } function checkTitulo($tit){ if(!empty($tit)){ $sql = "SELECT idp FROM libros WHERE titulo = '".$tit."' LIMIT 0,1"; $res = $this->conec->query($sql); if($this->conec->NumeroReg($res)>0){ $row = $this->conec->fetch($res); return $row["idPaginas"]; } else return false; } else return false; } }
Código:
Muchas gracias por la ayuda y siento que me haya quedado tan largo el post class conn{ var $Servidor="el_que_sea"; var $Login="el_que_sea" var $Pass="el_que_sea"; var $Basedatos="el_que_sea"; var $Deb; var $conex; function conn(){ if ( $this->$conex = @mysql_connect($this->Servidor,$this->Login,$this->Pass) ) { if(!@mysql_select_db($this->Basedatos,$this->Cnx) ) { $this->Deb = "error al seleccionar la Base de Datos<br />"; $this->Error(); } } else { $this->Deb = "Imposible conectarse a MySQL <br />"; $this->Error(); } } function query($Sql){ If ( $res = @mysql_query($Sql, $this->Cnx) ){ return $res; } Else{ $this->Deb .= "<strong>PROBLEMA</strong>:(".@mysql_errno($this->Cnx).")<br />".@MySQL_error($this->Cnx)."<br />"; $this->Error(); } } function Error(){ // actuamos en consecuencia }