Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andre.gadonski

[PHP5] __construct VS mysqli

Recommended Posts

Pessoal estou com uam dúvida meio besta aqui em relação ao uso da classe mysqli no php 5...

 

digamos que eu crie uma classe com o nome de db e na função construtora da classe eu coloque a conexão com o banco de dados, depois crie funções de execução no banco de dados.... como eu vou passar o objeto de conexão da função constutora para as demais funções?

 

vou fazer um exemplo aqui

<?PHPclass db {  public __construct() {   $mysqli = mysqli_init();   $mysqli->real_connect( servidor, usuario, senha, db);   if ( mysqli_connect_errno()){	  thror new exception(" Não conectou ao servidor mysql.");   } else {		  return true;  }  public function executaSQL( $sql) {	# aqui está o porem, como eu vou puxar o objeto $mysqli da função construtora ?	 $dataSet = $mysqli->prepare($sql);	 $dataSet->execute();	 $dataSet->store_result();	  if ( $dataSet->num_rows() > 0 ) {		 return true;	  } else {	   return false;	  }	 $dataSet->free_result();	 $dataSet->close();  }}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria uma variável dentro da classe, e no construct você guarda a conexão nessa var. Quando você for usar dentro de algum método da classe, simplesmente use $this->nomedavar

Compartilhar este post


Link para o post
Compartilhar em outros sites

não saquei muito bem, mas você quer utilizar os atributos e métods da classe mysqli é isso !?

ja tentou utilizar extends !?

 

class db extends mysqli{

}

 

---- edit ----

 

Nass ... entendi errado mesmo ... mals

Compartilhar este post


Link para o post
Compartilhar em outros sites

declara a var fora do metodo

 

exemplo:

public $mysqli;

 

e usa dentro dos metodos:

 

$this->mysqli = mysqli_init();

$this->mysqli->real_connect( servidor, usuario, senha, db);

 

e depois em outros metodos só o $this->mysqli

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi isso que basicamente eu fiz

class db  extends mysqli {	public	$SES_TIMEOUT	=	'-5 minutes'; 	const	MYSQL_SERVER	=	'server';	const	MYSQL_USER		=	'user';	const	MYSQL_PASS		=	'pass';	const	MYSQL_DB		=	'db';	const 	MYSQL_TABLE		=	'web_accounts_sessions';	//	Tabela no banco de dados	public $conexao			=	NULL;			public  function __construct() {				$this->conexao	=	mysqli_init();		$this->conexao->real_connect( self::MYSQL_SERVER, self::MYSQL_USER, self::MYSQL_PASS, self::MYSQL_DB );				if ( mysqli_connect_errno() ) {					throw new Exception("<strong>Servidor de banco de dados indisponivel no momento. Contactar administrador.</strong><br />");			exit();		}						return $this->conexao;	}		/**	*	Loga usuário	**/	public static function _addNewUser ( $_USER_ID, $_SES_ID ) {						$sql	=	"INSERT INTO ".self::MYSQL_TABLE." SET id = '".$_SES_ID."', account = '".$_USER_ID."', address = INET_ATON('".$_SERVER['REMOTE_ADDR']."'), time = '".time()."', start = '".time()."', value = 'Logged';";				$dataSource = $this->conexao->prepare($sql);		@$dataSource->execute();				if ( $dataSource->affected_rows > 0 ) {					return true;		} else {					return false;		}				$dataSouce->close();	}

 

Fatal error: Using $this when not in object context

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.