Problema com a PDO [RESOLVIDO]

1. Problema com a PDO [RESOLVIDO]

Helder Willian Marcos
helder1988

(usa Ubuntu)

Enviado em 28/12/2010 - 19:51h

Oi...estou tentando usar a pdo no ubunto com o xampp e tenho o seguinte problema:

Warning: PDO::__construct() [pdo.--construct]: [2002] Argumento inválido (trying to connect via unix://) in /opt/lampp/htdocs/www/teste_pdo/index.php on line 7

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Argumento inválido' in /opt/lampp/htdocs/www/teste_pdo/index.php:7 Stack trace: #0 /opt/lampp/htdocs/www/teste_pdo/index.php(7): PDO->__construct('mysql:host=loca...', 'root', '') #1 {main} thrown in /opt/lampp/htdocs/www/teste_pdo/index.php on line 7

//script
$dsn = 'mysql:host=localhost;dbname=news';
$username = 'root';
$passwd = '';

//linha 7
$bd = new PDO($dsn, $username, $passwd);

Detalhe: No windows roda perfeitamente!!! =/

Se alguém puder me ajudar, agradeço muito!!!

Obrigado desde já!


  


2. PDO

Paulo
henbran

(usa Debian)

Enviado em 28/12/2010 - 22:06h

Use o Synaptic (Sistema / Administração / Synaptic), por ele instale:
mysql server;
php5;
apache2;
phpmyadmin;

Após instalado, vá na pasta /var/www/
crie nesta pasta um arquivo com um nome qualquer.php, nele coloque <?php phpinfo();?>
Salve e execute no navegador http://localhost/qualquer.php
Dê "control(CTRL) + F" e pesquise se na tela do php tenha alguma informação PDO ...

Prossiga e boa sorte e Feliz 2011


3. PDO

Helder Willian Marcos
helder1988

(usa Ubuntu)

Enviado em 28/12/2010 - 22:29h

Então cara... eu tinha feito isso já, e o mais estranho é tudo está habilitado, os PDO Drives e etc ...

tem ideia do q pode ser ?

Brigado!


4. Salve este script em um arquivo Banco.php

Paulo
henbran

(usa Debian)

Enviado em 28/12/2010 - 22:51h

<?php

class Banco {

public $con;
public $msg;
public $dC;
private $tipo = "mysql";
private $host = "localhost";
private $bd = "nomeDoBancoDeDados";
private $user = "usuarioDoBancoDeDados";
private $pass = "senhaDoBancoDeDados";
//========================================================================================
public function conectar() {
$this->tipoBd();
if ($this->con) {
try {
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->msg = "Erro de conexão com o banco de dados: Código: " . $e->getCode() . "Mensagem " . $e->getMessage() . "hora: " . date('H:i:s');
}
} else {
echo utf8_encode("Erro na definição PDO do banco de dados!");
exit;
}
}
//========================================================================================
private function tipoBd() {

try {
switch ($this->tipo) {
case "mysql":
try {
$this->con = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->bd, $this->user, $this->pass);
} catch (Exception $e) {
$this->msg = "Erro de conexão com o banco de dados MySql. " . $e->getMessage();
}
break;
case "pgsql":
$this->con = new PDO("pgsql:dbname={" . $this->bd . "};user={" . $this->user . "}; password={" . $this->pass . "};host=" . $this->host);
break;
case "oci8":
$tns = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $this->host . ")(PORT=1521)))(CONNECT_DATA=(SID=" . $this->bd . ")))";
$this->con = new PDO("oci:dbname=" . $tns, $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));
break;
case "mssql":
$this->con = new PDO("mssql:host={" . $this->host . "},1433;dbname={" . $this->bd . "}", $this->user, $this->pass);
break;
}
} catch (Exception $e) {
echo $e->getMessage();
exit;
}
}
}
?>
========================================================
========================================================
Onde você for usar esta classe, no inicio do arquivo, chame-a:
...
require_once("Banco.php");
...
Depois instancie a classe:
...
$banco = new Banco();
$banco->conectar();
$sql = "SELECT * FROM TABELA";
$rs = $this->Banco->con->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

$rs->execute(); //executa a instrução sql
$retorno[n_reg] = $rs->rowCount();
$retorno[n_cols] = $rs->columnCount();

$retorno[res] = $rs->fetchAll(PDO::FETCH_ASSOC); //Retorna todas as linhas (registros) como um array

========================================================
Precisando ... estamos a disposição ...
Boa sorte


5. Pdo

Helder Willian Marcos
helder1988

(usa Ubuntu)

Enviado em 29/12/2010 - 12:19h

Então cara fiz exatamente isso q vc sugeriu ...

Warning: PDO::__construct() [pdo.--construct]: [2002] Argumento inválido (trying to connect via unix://) in /opt/lampp/htdocs/www/teste_pdo/index.php on line 37
Erro na definição PDO do banco de dados!

//linha 37
$this->con = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->bd, $this->user, $this->pass);

Eu acho q falta eu instalar alguma coisa ...

Brigado pela atenção!


6. Verifique os parâmetros de conexão

Paulo
henbran

(usa Debian)

Enviado em 29/12/2010 - 15:34h

private $tipo = "mysql";
private $host = "localhost"; // Verifique localhost/phpmyadmin
private $bd = "nomeDoBancoDeDados"; // Verifique se existe o banco especificado no MySql
private $user = "usuarioDoBancoDeDados"; // Check o usuário em questão
private $pass = "senhaDoBancoDeDados"; // Check o usuário em questão
===============================================================
Voce deve ter todos estes recursos consistentes p/ então executar o script passado.
==============================================================
Usamos esta classe em 8 programas, sem problemas algum


7. Resolvi :)

Helder Willian Marcos
helder1988

(usa Ubuntu)

Enviado em 29/12/2010 - 22:50h

Quando troquei o host de localhost para 127.0.0.1 funcionou na hora !!!

segue abaixo o exemplo:

<?php

$dsn = 'mysql:dbname=teste;host=127.0.0.1';
$user = 'root';
$password = '';

try {
$dbh = new PDO($dsn, $user, $password);
echo "conectou";
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

?>

Muito Obrigado pela atenção !!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts