Conexão com mysql não funciona [RESOLVIDO]

1. Conexão com mysql não funciona [RESOLVIDO]

Pablo Vaz Gondim Faria
pablim

(usa Ubuntu)

Enviado em 25/05/2012 - 00:09h

Oi pessoal preciso de uma ajuda!

Estou seguindo um exemplo de um livro de uma conexão com o banco de dados MySql mas o banco de dados não é criado e a página nem me retorna algum erro. Existe alguma coisa que deve ser instalada ou deve-se adicionar mais alguma coisa no código?

Este é o código do exemplo:

<?php
$host = "localhost";
$usuario = "root";
$senha = "123";
$nomeBanco = "LivroPHP";

$link = mysql_connect($host, $usuario, $senha);

if (mysql_create_db($nomeBanco, $link)){
print("O banco de dados, $nomeBanco foi criado com sucesso!<br>\n");
}else{
print("O banco de dados, $nomeBanco não pôde ser criado!<br>\n");
}

mysql_close($link);
?>

Obrigado!!


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 25/05/2012 - 23:18h

Então vamos facilitar sua vida, habilite no php.ini par que os erros sejam exibidos, ai verás qual o problema que é retornado ao tentar conectar..
Procure "display_errors = Off" no seu php.ini e configure para exibir:


display_errors = On

reinicie o apache e execute sua página novamente



3. Re: Conexão com mysql não funciona [RESOLVIDO]

Jesse
vexred

(usa Arch Linux)

Enviado em 25/05/2012 - 00:50h

Abra o terminal e digite 'mysql'. O que aparece?


4. Re: Conexão com mysql não funciona [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 25/05/2012 - 00:59h

vc tem instaldo o mysql? e tem esses dados que vc forneceu? ou seja banco, usuario e senha?????

$host = "localhost";
$usuario = "root";
$senha = "123";
$nomeBanco = "LivroPHP";


5. Re: Conexão com mysql não funciona [RESOLVIDO]

Pablo Vaz Gondim Faria
pablim

(usa Ubuntu)

Enviado em 25/05/2012 - 11:06h

Eu já tenho o mysql instalado e as informações de senha e usuário root são essas mesmas. Agora, o banco de dados não tenho criado porque o script irá faze-lo para mim quando passo mysql_create_db($nomeBanco, $link) para ele.

Quando digito somente mysql aparece:

ERROR 1045 (28000): Access denied for user 'pablim'@'localhost' (using password: NO)

Quando digito mysql -u root -p ele pede a senha e entra normal no mysql.



6. Re: Conexão com mysql não funciona [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 25/05/2012 - 23:53h

Na verdade a forma mais fácil de criar qualquer coisa no mysql através do php
é por query....

mysql_connect('host', 'user', 'senha');

$create = 'create database teste_novo';
mysql_query($create);

voila!


Isso funciona tambem com criação de tabelas, alteração, dropar bancos e tabelas... Enfim... faz tudo o que vc precisa.


7. Re: Conexão com mysql não funciona [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 26/05/2012 - 00:08h

andrebian escreveu:

Na verdade a forma mais fácil de criar qualquer coisa no mysql através do php
é por query....

mysql_connect('host', 'user', 'senha');

$create = 'create database teste_novo';
mysql_query($create);

voila!


Isso funciona tambem com criação de tabelas, alteração, dropar bancos e tabelas... Enfim... faz tudo o que vc precisa.


para evitar erros ou para finalidade de a query estar em um sistema que será utilizado em vários lugares a receita se torna a seguinte:

$create = 'create database teste_novo if not exists';

com isso a base somente será criada se nao existir e não se torna necessária a remoção deste trecho do codigo.

Espero ter ajudado.


8. Re: Conexão com mysql não funciona [RESOLVIDO]

Pablo Vaz Gondim Faria
pablim

(usa Ubuntu)

Enviado em 26/05/2012 - 00:44h

Habilitei no php.ini, como o rai3mb disse, para que os erros fossem exibidos, o que realmente facilitou minha vida, e ocorreu o seguinte erro:

Fatal error: Call to undefined function mysql_create_db() in /var/www/livro/bancoDeDados/createDB.php on line 14.

Que é uma chamada indefinida da função. No site do php fala também que a função mysql_create_db() é obsoleta e indica que se use a forma mostrada pelo andrebian.

Com isso funcionou beleza o script. Obrigado mais uma vez pelas dicas!!!


9. Re: Conexão com mysql não funciona [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 26/05/2012 - 17:50h

Agora falta eleger a melhor resposta par motivar o pessoal a continuar ajudando os demais users do VOL


10. Re: Conexão com mysql não funciona [RESOLVIDO]

Pablo Vaz Gondim Faria
pablim

(usa Ubuntu)

Enviado em 26/05/2012 - 19:32h

Escolhi o rai3mb como melhor resposta porque sem ver o erro é difícil saber o que fazer. Mas a resposta do andrebian é a maneira certa de fazer o que eu realmente queria, sendo então, as duas respostas de grande utilidade.


11. Re: Conexão com mysql não funciona [RESOLVIDO]

Andre Cardoso
andrebian

(usa Fedora)

Enviado em 26/05/2012 - 19:36h

correto, sem ver que erro ocorre é muito dificil descobrir como corrigir. boa escolha!


12. Classe de conexão pronta

Paulo
henbran

(usa Debian)

Enviado em 29/05/2012 - 08:19h

arquivo Banco.php

<?php

class Banco {

public $con;
public $msg;
//private $dC;

private $tipo = "mysql";
private $bd = "nomeDoBanco";
private $host = "localhost ou IP do servidor de Banco de Dados";
private $user = "usuário do banco de dados";
private $pass = "senha";

//NAO MEXER EM MAIS NADA ...

public function __construct() {

}

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 "Erro na definição PDO do banco de dados!";
exit;
}
}

private function tipoBd() {
try {
//$this->dC = new dC();
switch ($this->tipo) {
case 'mysql':
try {
$this->con = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->bd, $this->user, $this->pass);
} catch (Exception $exc) {
$this->msg = "Erro de coneção com o banco de dados MySql. " . $exc->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 $exc) {
echo $exc->getTraceAsString();
exit;
}
}

}
?>


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Para usar a classe de conexao:
classe cmdSql:

<?php

/* DEFINIÇÃO DESTA CLASSE: Receber as strings básicas Sql e executar (select / insert / update / delete)
* setar o resultado das instruções sql executadas no atributo 'retorno' e ...
* de uma classe extendida dessa se pode gerar a string xml e ...
* exibir o xml
*/

require_once("Banco.php");
class cmdSQL{

public $retorno; //GUARDA O RETORNO DA INSTRUÇÃO SQL EXECUTADA
private $rs; // SETA O RECORDSET
public $sql; // strings sql a executar
public $xml; // retorno transformado em xml
private $lastInsertId; // quando executado algum insert, guarda o id gerado pelo irsert do registro
private $B; // strings sql a executar

public function __construct() {
$this->B = new Banco();
$this->B->conectar();
}

//||||||||||||| COMANDOS DE SQL PARA OPERAÇÕES BÁSICAS |||||||||||||||||||||
//++++++++++++++++++++++++++ PESQUISAR ++++++++++++++++++++++++++
public function pesquisar() { // inicio do function PESQUISAR
try {
try // depende do resultado das instruções SQL a seguir
{
$this->rs = $this->B->con->prepare($this->sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // ???????
$this->rs->execute(); //executa a instrução sql
$this->retorno[n_reg] = $this->rs->rowCount();
$this->retorno[n_cols] = $this->rs->columnCount();
//echo "teste0: ". $this->retorno[n_reg]; exit; //LINHA SÓ P/ TESTE;
if (($this->retorno[n_reg])>0) {
$this->retorno[res]=$this->rs->fetchAll(PDO::FETCH_ASSOC); //Retorna todas as linhas (registros) como um array
}
else {
//Mensagem alertando que não econtrou registros
$this->retorno[msg] .= "Registro(s) não encontrado(s).";
}

}
catch (Exception $e) {
$this->retorno[msg] .= "\nErro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
} catch (Exception $exc) {
$this->retorno[msg] .= $this->msg." <hr> ".$exc->getTraceAsString();
}
return $this->retorno;
} // fim do function PESQUISAR
//++++++++++++++++++++++++++ INCLUIR ++++++++++++++++++++++++++
public function incluir() {
try {
$this->rs = $this->B->con->prepare($this->sql);
$this->rs->execute();
$this->retorno[msg] = 'Registro salvo com sucesso!';
//echo "insertId --> ".$this->B->con->lastInsertId(); exit;
$this->lastInsertId = $this->B->con->lastInsertId();
}
catch (Exception $e) {
$this->retorno[msg] = "Erro de inclusão: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
return $this->retorno;
}
//++++++++++++++++++++++++++ ALTERAR ++++++++++++++++++++++++++
public function alterar() {
try {
$this->rs = $this->B->con->prepare($this->sql);
$this->rs->execute();
$this->retorno[msg] = 'Registro alterado com sucesso!';
}
catch (Exception $e) {
$this->retorno[msg] = "Erro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
//++++++++++++++++++++++++++ EXCLUIR ++++++++++++++++++++++++++
public function excluir() {
try {
$this->rs = $this->B->con->prepare($this->sql);
$this->rs->execute();
$this->retorno[msg] = 'Registro removido com sucesso!';
}
catch (Exception $e) {
$this->retorno[msg] = "Erro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
return $this->retorno;
}

public function extraiArrayXml() {
try {
if ($this->retorno[res]) {
foreach ($this->retorno[res] as $lin) {
foreach ($lin as $k=>$col) {
$linha .= "<".$k.">".utf8_encode($col)."</".$k.">";
}
}
$this->xml .= "<registros>".$linha."</registros>";
}
if ($this->retorno[n_reg]) $this->xml .= "<n_reg>".$this->retorno[n_reg]."</n_reg>";
if ($this->retorno[n_cols]) $this->xml .= " <msg> ".$this->retorno[n_cols]." </msg>";
if ($this->lastInsertId) $this->xml .= " <lastInsertId> ".$this->lastInsertId." </lastInsertId>";
if ($this->retorno[msg]) $this->xml .= " <msg> ".$this->retorno[msg]." </msg>";

} catch (Exception $exc) {
echo "Erro de extração da Array para XML.<hr>".$exc->getTraceAsString();
}


}
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXIBE XML %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public function exibeXml() {
try {
header("Content-type: application/xml");
$this->xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><raiz>".$this->xml."</raiz>";
return $this->xml;

} catch (Exception $exc) {
echo '<msg>Erro de montagem XML!!!<msg>'.$exc->getTraceAsString();
}
}
}

?>

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
BOA SORTE








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts