acao Posted June 11, 2013 at 09:27 PM Report #512150 Posted June 11, 2013 at 09:27 PM (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 June 14, 2013 at 05:24 PM by yoda
HappyHippyHippo Posted June 11, 2013 at 09:42 PM Report #512152 Posted June 11, 2013 at 09:42 PM ou em $stmt-> deveria abrir a caixa pop-up. deveria ? porque ? se achas que viste essa funcionalidade num IDE qualquer, não quer dizer que os outros o façam. andes viste esse dito "pop-up" aparecer ? foi mesmo no Netbeans ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
acao Posted June 11, 2013 at 10:07 PM Author Report #512161 Posted June 11, 2013 at 10:07 PM 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
HappyHippyHippo Posted June 11, 2013 at 10:16 PM Report #512162 Posted June 11, 2013 at 10:16 PM 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 Portugol Plus
acao Posted June 11, 2013 at 10:40 PM Author Report #512169 Posted June 11, 2013 at 10:40 PM (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 June 12, 2013 at 12:33 PM by yoda
HappyHippyHippo Posted June 11, 2013 at 10:54 PM Report #512172 Posted June 11, 2013 at 10:54 PM porque numa instância ele sabe que tipo de dados tens a variável e na outra não IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
mjamado Posted June 11, 2013 at 11:56 PM Report #512184 Posted June 11, 2013 at 11:56 PM (edited) No Netbeans podes "ajudar" o code completion declarando a tipagem das variáveis: /* * @var Conexao */ private $cnn; Edited June 11, 2013 at 11:56 PM 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.
I-NOZex Posted June 12, 2013 at 12:15 PM Report #512313 Posted June 12, 2013 at 12:15 PM De varios que ja exprimentei (php builder, zender ide, netbeans, eclipse) o que mais gosto é mesmo o Rapid PHP, uma ide facil, eficiente e cheia de extras 😉 B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
acao Posted June 12, 2013 at 01:35 PM Author Report #512332 Posted June 12, 2013 at 01:35 PM (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 June 14, 2013 at 10:41 AM by acao
danielcsgomes Posted June 12, 2013 at 03:48 PM Report #512401 Posted June 12, 2013 at 03:48 PM O melhor IDE para desenvolvimento em PHP neste momento na minha opinião é o PhpStorm da Jetbrains. Vale o dinheiro! http://www.jetbrains.com/phpstorm/
bioshock Posted June 12, 2013 at 04:05 PM Report #512420 Posted June 12, 2013 at 04:05 PM Notepad++ forever 😁
acao Posted June 13, 2013 at 11:07 AM Author Report #512554 Posted June 13, 2013 at 11:07 AM 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
pikax Posted June 13, 2013 at 11:17 AM Report #512559 Posted June 13, 2013 at 11:17 AM 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."
I-NOZex Posted June 13, 2013 at 11:38 AM Report #512580 Posted June 13, 2013 at 11:38 AM é 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
anolsi Posted June 13, 2013 at 12:02 PM Report #512597 Posted June 13, 2013 at 12:02 PM 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!
brunoais Posted June 13, 2013 at 12:13 PM Report #512601 Posted June 13, 2013 at 12:13 PM 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%.
scorch Posted June 13, 2013 at 12:20 PM Report #512606 Posted June 13, 2013 at 12:20 PM @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.
anolsi Posted June 13, 2013 at 01:01 PM Report #512613 Posted June 13, 2013 at 01:01 PM 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!
bioshock Posted June 13, 2013 at 02:01 PM Report #512631 Posted June 13, 2013 at 02:01 PM http://php.net/manual/en/mysqli.multi-query.php E podes sempre criar uma classe que te satisfaça a maior parte dos teus projectos.
acao Posted June 14, 2013 at 10:41 AM Author Report #512862 Posted June 14, 2013 at 10:41 AM boas obrigado pelas dicas resolvido cumps acao
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now