Jump to content

[Resolvido] Ide's e classe PDO


Recommended Posts

Posted (edited)

boas

estou a iniciar-me em PDO e venho pedir ajuda em varias situações.

1. desejava saber qual o ide que funcione melhor para utilizar a classe PDO e a Clase mysqli.

- estou a usar o netbeans 7.3 mas tenho dificuldade em visualizar a ajuda da caixa pop-up correctamente. mesmo não tendo adicionado os ficheiros (include_once) as variaveis aparecem lá.

- se usar o dreawmeaver 8 não consigo que abra a ajuda da caixa pop-up, este seria o meu preferido.

2.tenho estas duas classes para ligação á basedados e depois de estanciar instanciar a classe conexao não tenho as classes do PDO.

<?php
class Conexao extends PDO {
private $dsn = "mysql:host=127.0.0.1;dbname=oficina";
private $user = "root";
private $password = "";
public $handle = null;
function __construct() {
	try {
		//aqui ela retornará o PDO em si, veja que usamos parent::_construct()
		if ( $this->handle == null ) {
		$dbh = parent::__construct( $this->dsn , $this->user , $this->password );
		$this->handle = $dbh;
		return $this->handle;
		}
	}
	catch ( PDOException $e ) {
	echo "Conexão falhou. Erro: " . $e->getMessage( );
	return false;
	}
}
//aqui criamos um objeto de fechamento da conexão
function __destruct( ) {
$this->handle = NULL;
}
function testec($exemplo){
	$testeex = $exemplo;
	return $testeex;
}
}
?>

aqui nesta classe na função inserir depois da variavel «cnn» deveria ter na caixa do pop-up «prepare» e nem abre a caixa

<?php
class Registo {
public $cnn = null;
public function RegistoConstrtr(){
include_once('ClassConexao.php');
$this->cnn = new Conexao();
}
public function inserir($registo){
try{
	$stmt = $this->cnn->	/*prepare("INSERT INTO...;*/
	$stmt->bindValue(1, $registo->getNome() );
}catch ( PDOException $ex ){  echo "Erro: ".$ex->getMessage(); }
}
}
?>

ou em $stmt-> deveria abrir a caixa pop-up.

as duas classe estão na mesma pasta.

se for possivel ajudar agradecia.

cumps

acao

Edited by yoda
Posted

boas

obrigado pela resposta

não vi mas penso que deveria aparecer, porque é identico em:

$stmt = $this->cnn-> aqui na função inserir que aqui também não abre mas se for na função registoConstrtr já aparece.

duas perguntas:

1.o cod que já fiz está correcto?

1. o dreawmeaver 8 já dá para pdo e mysqli ? e tem alguma ideia porque a janela pop-up não abre.

cumps

acao

Posted

boas

obrigado pela resposta

não vi mas penso que deveria aparecer, porque é identico em:

$stmt = $this->cnn-> aqui na função inserir que aqui também não abre mas se for na função registoConstrtr já aparece.

o que chamada de pop-up não é um pop-up !!!

é o auto-complete !!!

onde dizes que aparece é porque tens a definição da classe (Conexao) no teu código, ao contrário das classes PDO.

duas perguntas:

1.o cod que já fiz está correcto?

1. o dreawmeaver 8 já dá para pdo e mysqli ? e tem alguma ideia porque a janela pop-up não abre.

cumps

acao

1 - obviamente que não:

           $stmt = $this->cnn->    /*prepare("INSERT INTO...;*/

isto nunca irá funcionar ... (correr sequer)

2 - o dreamweaver é um editor de texto, usar PDO ou mysqli_* é da responsabilidade da instalação do WebServer/PHP

IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

boas

a função inserir ainda está em construção.

porque razao então o auto complete aqui abre e mostra as variaveis PDO:

public function RegistoConstrtr(){
include_once('ClassConexao.php');
$this->cnn = new Conexao();
$stmt = $this->cnn->	/* aqui abre*/

aqui já não abre, o cod está incorrecto?

public function inserir($registo){
try{
	$stmt = $this->cnn-> /* não abre*/

cumps

acao

Edited by yoda
Posted (edited)

No Netbeans podes "ajudar" o code completion declarando a tipagem das variáveis:

/*
* @var Conexao
*/
private $cnn;
Edited by mjamado

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Posted (edited)

boas

obrigado aos dois pelas respostas.

resolvido ---- e parece que estou tambem a gostar do netbeans.

isto era problema de iniciante,

foi só alterar a função registoConstrtr, para __construtor,e a mistura de variaveis da classe pdo e mysqli que me apareciam na janela auto complete era porque tinha um ficheiro na mesma pasta das classes com uma classe conexao estendida ao mysqli, embora não estivesse a chamar esse ficheiro a clase tinha o mesmo nome e o netbeans parece que ficava atrofiado.

ficou assim:

<?php
class Registo {
private $cnn = null;
function __construct(){
 include_once('ClassConexao.php');
 $this->cnn = new Conexao();
 $stmt = $this->cnn-> /* abre janela auto compate*/
}
public function inserir($registo){
try{
 $stmt = $this->cnn-> /*abre janela*/ /*prepare("INSERT INTO...;*/
 $stmt->bindValue(1, $registo->getNome() );
}catch ( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
}
}
?>

obrigado pelas ajudas

cumpsacao

edit:

I-NOZex

o que mais gosto é mesmo o Rapid PHP, uma ide facil, eficiente e cheia de extras

vou ter que o testar.

cumps

acao

Edited by acao
Posted

boas

obrigado pelas respostas.

vou aproveitar este topico para efectuar uma questão, até porque penso que alguns dos users que tiveram a amabilidade de me ajudar usaram ou ainda usam PDO.

neste momento do campeonato, o que é melhor utilizar a classe pdo a ou a mysqli.

cumps

acao

Posted
neste momento do campeonato, o que é melhor utilizar a classe pdo a ou a mysqli.

conforme as tuas necessidades, o mysqli so' vai funcionar com o mysql, se so' usares mysql, e' recomendado o mysqli!

o PDO e' porreiro quando tens varias tipos de base de dados ja' que da' para utilizar ODBC 🙂

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

é o que user de cima diz, se prentendes criar um sistema que por ventura algum dia poderá ter que mudar o sistema de base de dados, convem usar PDO, se a ideia é usar sempre MYSQL, MYSQLi entao 😉

agora mysql_* é que não xD

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net
Posted

PDO sempre.

Dantes ainda se colocava a questão de com o mysqli conseguires melhores velocidades que com PDO, mas agora a diferença é tão reduzida, e o PDO traz várias vantagens como as Prepared Statetments que já te ajudam bastante na luta contra SQL Injection por exemplo que nem vale a pena ponderar usar o mysqli.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Posted

mysqli tem prepared statements, por isso, o que afirmas n faz sentido.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted

@brunoais Na minha opinião, PDO é a escolha ideal. É verdade que o MySQLi também tem prepared statements, mas ficas preso a usar base de dados MySQLi. E afinal, se podes usar PDO que te dá as mesmas vantagens, a mesma velocidade (em termos práticos), mesmo que agora penses que apenas precisas de MySQL, se no futuro precisares de mudar de motor de base de dados, PDO ofece-te bastante mais vantagens. É mais, não há razão para não usar. 🙂

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Posted

mysqli tem prepared statements, por isso, o que afirmas n faz sentido.

Por acaso tens razão. Tinha a impressão que não suportava, mas devia estar a confundir com a extensão mysql (que esse sim é bastante antigo). Btw, e tal como o scorch disse essa não é a única vantagem (foi a primeira que me veio à cabeça simplesmente). O que eu essencialmente queria realçar é que anteriormente se falava muito numa diferença de velocidades de acesso, mas que agora essa questão já não se coloca, porque as diferenças, são do meu ponto de vista irrisórias. É verdade que no entanto o mysqli pode por vezes fazer mais sentido em alguns casos, mas na minha opinião, serão casos bastante específicos (por exemplo com necessidades de utilizar múltiplas querys, que acho que ainda não estava implementado em PDO). No entanto a minha preferência continua a recair sempre sobre PDO.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.