Ir para conteúdo

POWERED BY:

Arquivado

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

Rafael Lopes da Silva

Uncaught exception 'PDOException' with message 'SQLSTATE[H

Recommended Posts

Blz galera!

Estou com dificuldade em salvar estes dados no banco ... Vi os outros casos parecidos ... mas até agora não descobri o erro ..... os dados preenchidos pelo usuário estão sendo carregados perfeitamente na classe paciente .... a m***** é na classe DAO ... rsrsrs. .... então conto com a ajuda de vcs ... que são mestres de jedi ...rsrsr

Segue o código:

Obs: Estou programando em Modelo MVC. E nenhuma dessas classes apresentam erro quando são compiladas.

--------> Classe de conexão com o banco

<?php
define("DB_HOST","localhost");
define("DB_NAME","bd_natercia");
define("DB_USER","root");
define("DB_PASS","");
class connection
{
private static $instance;
public static function getInstance()
{
if(!isset(self::$instance))
{
try
{
self::$instance = new PDO('mysql:host='. DB_HOST .';dbname=' . DB_NAME, DB_USER, DB_PASS);
self::$instance -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo " Erro !". $e -> getMessage();
}
}
return self::$instance;
}
public static function prepare($sql)
{
return self::getInstance()->prepare($sql);
}
}
?>
--------> Classe Paciente
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/Natercia/classes/banco/connection.php");
class paciente
{
# Atributos
private $id;
private $dataCadastro;
private $nome;
private $sexo;
private $dataNascimento;
private $idade;
private $estadoCivil;
private $filho;
private $quantidadeFilho;
private $profissao;
private $cep;
private $rua;
private $numero;
private $complemento;
private $bairro;
private $cidade;
private $estado;
private $email;
private $indicaçao;
private $nomeProfissional;
private $especialidade;
private $dddProfissional ;
private $telefoneProfissional ;
private $enfermidade ;
private $descriçaoEnfermidade ;
private $remedio;
private $descriçaoRemedio;
private $atividadeFisica;
private $problema;
private $diagnostico;
private $evoluçao;
private $statusPaciente;
private $status;
# Métodos
public function setId($id)
{
$this -> id = $id;
}
public function getId()
{
return $this -> id;
}
public function setDataCadastro($dataCadastro)
{
$this -> dataCadastro = $dataCadastro;
}
public function getDataCadastro()
{
return $this -> dataCadastro;
}
public function setNome($nome)
{
$this -> nome = $nome;
}
public function getNome()
{
return $this -> nome;
}
public function setSexo($sexo)
{
$this -> sexo = $sexo;
}
public function getSexo()
{
return $this -> sexo;
}
public function setDataNascimento($dataNascimento)
{
$this -> dataNascimento = $dataNascimento;
}
public function getDataNascimento()
{
return $this -> dataNascimento;
}
public function setIdade($idade)
{
$this -> idade = $idade;
}
public function getIdade()
{
return $this -> idade;
}
public function setEstadoCivil($estadoCivil)
{
$this -> estadoCivil = $estadoCivil;
}
public function getEstadoCivil()
{
return $this -> estadoCivil;
}
public function setFilho($filho)
{
$this -> filho = $filho;
}
public function getFilho()
{
return $this -> filho;
}
public function setQuantidadeFilho($quantidadeFilho)
{
$this -> quantidadeFilho = $quantidadeFilho;
}
public function getQuantidadeFilho()
{
return $this -> quantidadeFilho;
}
public function setProfissao($profissao)
{
$this -> profissao = $profissao;
}
public function getProfissao()
{
return $this -> profissao;
}
public function setCep($cep)
{
$this -> cep = $cep;
}
public function getCep()
{
return $this -> cep;
}
public function setRua($rua)
{
$this -> rua = $rua;
}
public function getRua()
{
return $this -> rua;
}
public function setNumero($numero)
{
$this -> numero = $numero;
}
public function getNumero()
{
return $this -> numero;
}
public function setComplemento($complemento)
{
$this -> complemento = $complemento;
}
public function getComplemento()
{
return $this -> complemento;
}
public function setBairro($bairro)
{
$this -> bairro = $bairro;
}
public function getBairro()
{
return $this -> bairro;
}
public function setCidade($cidade)
{
$this -> cidade = $cidade;
}
public function getCidade()
{
return $this -> cidade;
}
public function setEstado($estado)
{
$this -> estado = $estado;
}
public function getEstado()
{
return $this -> estado;
}
public function setEmail($email)
{
$this -> email = $email;
}
public function getEmail()
{
return $this -> email;
}
public function setIndicaçao($indicaçao)
{
$this -> indicaçao = $indicaçao;
}
public function getIndicaçao()
{
return $this -> indicaçao;
}
public function setNomeProfissional($nomeProfissional)
{
$this -> nomeProfissional = $nomeProfissional;
}
public function getNomeProfissional()
{
return $this -> nomeProfissional;
}
public function setEspecialidade($especialidade)
{
$this -> especialidade = $especialidade;
}
public function getEspecialidade()
{
return $this -> especialidade;
}
public function setDddProfissional($ddd)
{
$this -> dddProfissional = $ddd;
}
public function getDddProfissional()
{
return $this -> dddProfissional;
}
public function setTelefoneProfissional($telefone)
{
$this -> telefoneProfissional = $telefone;
}
public function getTelefoneProfissional()
{
return $this -> telefoneProfissional;
}
public function setEnfermidade($enfermidade)
{
$this -> enfermidade = $enfermidade;
}
public function getEnfermidade()
{
return $this -> enfermidade;
}
public function setDescriçaoEnfermidade($descriçaoEnfermidade)
{
$this -> descriçaoEnfermidade = $descriçaoEnfermidade;
}
public function getDescriçaoEnfermidade()
{
return $this -> descricaoEnfermidade;
}
public function setRemedio($remedio)
{
$this -> remedio = $remedio;
}
public function getRemedio()
{
return $this -> remedio;
}
public function setDescriçaoRemedio($descricaoRemedio)
{
$this -> descriçaoRemedio = $descricaoRemedio;
}
public function getDescriçaoRemedio()
{
return $this -> descriçaoRemedio;
}
public function setAtividadeFisica($atividadeFisica)
{
$this -> atividadeFisica = $atividadeFisica;
}
public function getAtividadeFisica()
{
return $this -> atividadeFisica;
}
public function setProblema($problema)
{
$this -> problema = $problema;
}
public function getProblema()
{
return $this -> problema ;
}
public function setDiagnostico($diagnostico)
{
$this -> diagnostico = $diagnostico;
}
public function getDiagnostico()
{
return $this -> diagnostico;
}
public function setEvoluçao($evoluçao)
{
$this -> evoluçao = $evoluçao;
}
public function getEvoluçao()
{
return $this -> evoluçao;
}
public function setStatusPaciente($statusPaciente)
{
$this -> statusPaciente = $statusPaciente;
}
public function getStatusPaciente()
{
return $this -> statusPaciente;
}
public function setStatus($status)
{
$this -> status = $status;
}
public function getStatus()
{
return $this -> status;
}
}
?>
---------->Classe interface
<?php
interface pacienteInterface
{
public function inserirPaciente(paciente $objetoPaciente);
public function alterarPaciente(paciente $objetoPaciente);
public function excluirPaciente(paciente $objetoPaciente);
public function LocalizarPaciente(paciente $objetoPaciente);
public function LocalizarTudo();
}
?>
------->Classe pacienteController
<?php
include_once('Paciente.php');
include_once('pacienteDAO.php');
class pacienteController
{
# Atributos da classe
private $objdall;
function __construct()
{
$this -> objdall = new pacienteDao();
}
public function inserirPaciente(paciente $objetoPaciente)
{
return $this -> objdall -> inserirPaciente($objetoPaciente);
}
public function alterarPaciente(paciente $objetoPaciente)
{
return $this -> objdall -> alterarPaciente($objetoPaciente);
}
public function excluirPaciente(paciente $objetoPaciente)
{
return $this -> objdall -> excluirPaciente($objetoPaciente);
}
public function LocalizarPaciente(paciente $objetoPaciente)
{
return $this -> objdall -> LocalizarPaciente($objetoPaciente);
}
public function LocalizarTudo()
{
return $this -> objdall -> LocalizarTudo;
}
}
?>
---->Classe pacienteDao
<?php
class pacienteDao implements pacienteInterface
{
public function inserirPaciente(paciente $objetoPaciente)
{
try
{
$sql = 'INSERT INTO paciente (data_cadastro, nome, sexo, data_nascimento, idade, estado_civil, filho, quantidade_filhos, profissao, cep, rua, numero, complemento, bairro, cidade, estado, email, indicacao, nome_profissional, especialidade, ddd_profissional, telefone_profissional, enfermidade, descricao_enfermidade, remedio, descricao_remedio, atividade_fisica, problema, diagnostico, evolucao, status_paciente, ativo)
VALUES (:dataCadastro, :nome, :sexo, :dataNascimento, :idade, :estadoCivil, :filho,
:quantidadeFilho, :profissao, :cep, :rua, :numero, :complemento, :bairro,
:cidade, :estado, :email, :indicaçao, :nomeProfissional, :especialidade,
:dddProfissional, :telefoneProfissional, :enfermidade, :descriçaoEnfermidade, :remedio, :descriçaoRemedio, :atividadeFisica, :problema, :diagnostico,
:evoluçao, :statusPaciente, :ativo)';
$stmt = connection::prepare($sql);
$stmt -> execute(
array(
':dataCadastro' => $objetoPaciente->getdataCadastro(),
':nome' => $objetoPaciente->getNome(),
':sexo' => $objetoPaciente->getSexo(),
':dataNascimento' => $objetoPaciente->getDataNascimento(),
':idade' => $objetoPaciente->getIdade(),
':estado_civil' => $objetoPaciente->getEstadoCivil(),
':filho' => $objetoPaciente->getFilho(),
':quantidadeFilho' => $objetoPaciente->getQuantidadeFilho(),
':profissao' => $objetoPaciente->getprofissao(),
':cep' => $objetoPaciente->getCep(),
':rua' => $objetoPaciente->getRua(),
':numero' => $objetoPaciente->getNumero(),
':complemento' => $objetoPaciente->getComplemento(),
':bairro' => $objetoPaciente->getBairro(),
':cidade' => $objetoPaciente->getCidade(),
':estado' => $objetoPaciente->getEstado(),
':email' => $objetoPaciente->getEmail(),
':indicaçao' => $objetoPaciente->getIndicaçao(),
':nomeProfissional' => $objetoPaciente->getNomeProfissional(),
':especialidade' => $objetoPaciente->getEspecialidade(),
':dddProfissional' => $objetoPaciente->getDddProfissional(),
':telefoneProfissional' => $objetoPaciente->getTelefoneProfissional(),
':enfermidade' => $objetoPaciente->getEnfermidade(),
':descriçaoEnfermidade' => $objetoPaciente->getDescriçaoEnfermidade(),
':remedio' => $objetoPaciente->getRemedio(),
':descriçaoRemedio' => $objetoPaciente->getDescriçaoRemedio(),
':atividadeFisica' => $objetoPaciente->getAtividadeFisica(),
':problema' => $objetoPaciente->getProblema(),
':diagnostico' => $objetoPaciente->getDiagnostico(),
':evoluçao' => $objetoPaciente->getEvoluçao(),
':statusPaciente' => $objetoPaciente->getStatusPaciente(),
':ativo' => $objetoPaciente->getStatus()
)
);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite os erros do PHP

http://php.net/manual/pt_BR/function.error-reporting.php

Não entendi esta interface

interface pacienteInterface

{
public function inserirPaciente(paciente $objetoPaciente);
public function alterarPaciente(paciente $objetoPaciente);
public function excluirPaciente(paciente $objetoPaciente);
public function LocalizarPaciente(paciente $objetoPaciente);
public function LocalizarTudo();
}

além de gorda, os metodos dela estão na controller e implementada na model, que coisa!

class pacienteController

{


# Atributos da classe
private $objdall;


function __construct()
{
$this -> objdall = new pacienteDao();
}


public function inserirPaciente(paciente $objetoPaciente)
  {
  return $this -> objdall -> inserirPaciente($objetoPaciente);
  }


  public function alterarPaciente(paciente $objetoPaciente)
  {
  return $this -> objdall -> alterarPaciente($objetoPaciente);
  }


public function excluirPaciente(paciente $objetoPaciente)
{
return $this -> objdall -> excluirPaciente($objetoPaciente);
}


public function LocalizarPaciente(paciente $objetoPaciente)
{
return $this -> objdall -> LocalizarPaciente($objetoPaciente);
}


public function LocalizarTudo()
{
return $this -> objdall -> LocalizarTudo;
}



}

O que tenho pra falar sobre interfaces é o seguinte, senão sabe pra que serve e nem como se usa, nem implementa, é melhor deixar sem.

Outro detalhe que voce inverteu os papeis, colocou nome de classes iniciando com letras minusculas e alguns metodos com letras maiusculas, o correto é o oposto.

Corrija isso e volte a postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo!

Discordo de algumas afirmações:

1º Uso da interface:

Eu sei muito bem pra que serve e como se usa uma interface...rsrsr ... Se você observar bem a interface "pacienteInterface" possui métodos que podem ter funcionalidades e parâmetros diferentes... por isso que usei a interface ... rsrsr ... que foi implementada na classe PacienteDAO ... E será chamada na classe PacienteController ... pois quando você desenvolve um projeto em MVC a classe controller que faz o papel de chamar as outras classes ... por isso No caso a model = Paciente e a Dao = PacienteDao.

Já a sua afirmação " ...Outro detalhe que voce inverteu os papeis, colocou nome de classes iniciando com letras minusculas e alguns metodos com letras maiusculas, o correto é o oposto ... pode deixar que vou mudar .... mas convenhamos isso não impediria de você ajudar o meu problema .... mas agradeço por suas OBSERVAÇÕES TÃO ÚTEIS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Discordo de algumas afirmações:

1º Uso da interface:

Eu sei muito bem pra que serve e como se usa uma interface...rsrsr ...

Quais?

... Se você observar bem a interface "pacienteInterface" possui métodos que podem ter funcionalidades e parâmetros diferentes... por isso que usei a interface ... rsrsr ... que foi implementada na classe PacienteDAO ... E será chamada na classe PacienteController ... pois quando você desenvolve um projeto em MVC a classe controller que faz o papel de chamar as outras classes ... por isso No caso a model = Paciente e a Dao = PacienteDao.

Pois estas acima não me convenceu!

Não é responsabilidade do controller implementar os métodos da DAO/Model mas sim usar os objetos, a responsabilidade do controller é tratar os dados de requisição http e enviar para DAO/Model e a DAO/Model efetuar o retorno destes dados, caso necessário.

Exemplo de uso do Objeto no controller

public function registrar()
{

     $dao = new DAO();
     if ($dao instanceof InterfaceDAO) {
         $dao->nome_do_contrato_interface($argumentos);
     }
}

http://pt.stackoverflow.com/questions/86484/programar-voltado-para-interface-e-n%C3%A3o-para-a-implementa%C3%A7%C3%A3o-por-que

Seu código esta cheio de problemas de design que fica até complicado tentar te lhe ajudar, ainda mais quando já se sabe.

Mas se quer descobrir qual o problema da query "SQL" na PDO

termine o bloco Try, falta o Catch e habilite todos os erros

Exemplo:

try {

    //TROQUE AQUI A VARIAVEL $this->pdo, para a que esta usando
     $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    


} catch (PDOException $e) {

    echo $e->getMessage();

}

Outro detalhe evite caracteres ASCII em nome de atributos, Metodos, Placeholders etc

':descriçaoEnfermidade' => $objetoPaciente->getDescriçaoEnfermidade(), 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
include_once('paciente.php');
include_once('pacienteInterface.php');
class PacienteDao implements PacienteInterface
{
public function inserirPaciente(paciente $objetoPaciente)
{
try
{
$sql = 'INSERT INTO paciente (data_cadastro, nome, sexo, data_nascimento, idade, estado_civil, filho, quantidade_filhos, profissao, cep, rua, numero, complemento, bairro, cidade, estado, email, indicacao, nome_profissional, especialidade, ddd_profissional, telefone_profissional, enfermidade, descricao_enfermidade, remedio, descricao_remedio, atividade_fisica, problema, diagnostico, evolucao, status_paciente, ativo)
VALUES (:dataCadastro, :nome, :sexo, :dataNascimento, :idade, :estadoCivil, :filho,
:quantidadeFilho, :profissao, :cep, :rua, :numero, :complemento, :bairro,
:cidade, :estado, :email, :indicacao, :nomeProfissional, :especialidade,
:dddProfissional, :telefoneProfissional, :enfermidade, :descricaoEnfermidade, :remedio, :descricaoRemedio, :atividadeFisica, :problema, :diagnostico,
:evolucao, :statusPaciente, :ativo)';
$stmt = Connection::prepare($sql);
$stmt -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt -> execute(
array(
':dataCadastro' => $objetoPaciente->getdataCadastro(),
':nome' => $objetoPaciente->getNome(),
':sexo' => $objetoPaciente->getSexo(),
':dataNascimento' => $objetoPaciente->getDataNascimento(),
':idade' => $objetoPaciente->getIdade(),
':estado_civil' => $objetoPaciente->getEstadoCivil(),
':filho' => $objetoPaciente->getFilho(),
':quantidadeFilho' => $objetoPaciente->getQuantidadeFilho(),
':profissao' => $objetoPaciente->getprofissao(),
':cep' => $objetoPaciente->getCep(),
':rua' => $objetoPaciente->getRua(),
':numero' => $objetoPaciente->getNumero(),
':complemento' => $objetoPaciente->getComplemento(),
':bairro' => $objetoPaciente->getBairro(),
':cidade' => $objetoPaciente->getCidade(),
':estado' => $objetoPaciente->getEstado(),
':email' => $objetoPaciente->getEmail(),
':indicacao' => $objetoPaciente->getIndicacao(),
':nomeProfissional' => $objetoPaciente->getNomeProfissional(),
':especialidade' => $objetoPaciente->getEspecialidade(),
':dddProfissional' => $objetoPaciente->getDddProfissional(),
':telefoneProfissional' => $objetoPaciente->getTelefoneProfissional(),
':enfermidade' => $objetoPaciente->getEnfermidade(),
':descricaoEnfermidade' => $objetoPaciente->getDescricaoEnfermidade(),
':remedio' => $objetoPaciente->getRemedio(),
':descricaoRemedio' => $objetoPaciente->getDescricaoRemedio(),
':atividadeFisica' => $objetoPaciente->getAtividadeFisica(),
':problema' => $objetoPaciente->getProblema(),
':diagnostico' => $objetoPaciente->getDiagnostico(),
':evolucao' => $objetoPaciente->getEvolucao(),
':statusPaciente' => $objetoPaciente->getStatusPaciente(),
':ativo' => $objetoPaciente->getStatus()
)
);
} catch (PDOException $e) {
print "Ocorreu um erro ao tentar executar esta ação, tente mais tarde." . " <br>Erro na Linha: " . $e -> getLine() . "<br> Código do Erro: ". $e -> getCode() . "<br>Arquivo:". $e -> getFile(). "<br> MENSAGEM:". $e -> getMessage();
}
}
}

?>

Após as modificações no script, eis que mudou a mensagem de erro ...rsrs:

Ocorreu um erro ao tentar executar esta ação, tente mais tarde.
Erro na Linha: 23
Código do Erro: IM001
Arquivo:C:\xampp\htdocs\Natercia\classes\paciente\pacienteDao.php
MENSAGEM:SQLSTATE[iM001]: Driver does not support this function: This driver doesn't support setting attributes

Tradução

SQLSTATE [iM001]: O driver não suporta esta função: Este driver não oferece suporte a atributos de configuração

Pesquisei a mensagem de erro ... e não encontre a solução do erro.

Executei o script pra verificar minha conexão PDO ... está tudo ok com minha conexão

<?php
foreach ( PDO::getAvailableDrivers() as $driver )
{
echo $driver . '<br />';
}
?>

SQLSTATE [iM001]: O driver não suporta esta função: Este driver não oferece suporte a atributos de configuração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dei uma pesquisada no link que você passou .... algumas horas estudando o assunto de DSN ... rsrsr ... fiz as modificações no código ... e o mais legal que continua dando o mesmo erro ... rsrsr ... haja persistência e paciência ..rsrrs .... foi só um desabafo ... :)

Obs: Utilizo o phpmyadmin e tem essas seguintes configurações

----> Atualização da classe Connection

<?php
define('DB_DSN','mysql:dbname=bd_natercia;host=127.0.0.1;port=3306;charset=utf8');
define('DB_USER','root');
define('DB_PASS','');
class Connection
{
private static $instance;
public static function getInstance()
{
if(!isset(self::$instance))
{
try
{
self::$instance = new PDO(DB_DSN, DB_USER, DB_PASS, array(PDO::ATTR_PERSISTENT => true));
self::$instance -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
echo " Erro !". $e -> getMessage();
}
}
return self::$instance;
}
public static function prepare($sql)
{
return self::getInstance()->prepare($sql);
}
}
?>
vou colocar o arquivo de validação por desencargo ...rsrrs
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/natercia/classes/paciente/pacienteController.php");
require_once($_SERVER['DOCUMENT_ROOT']."/natercia/classes/paciente/paciente.php");
#instancio a classe paciente
$objetoPaciente = new paciente();
#instancio a classe pacienteController
$objetoPacienteController = new pacienteController();
if(isset($_POST['btnavançar']))
{
$dataCadastro = $data;
$nome = $_POST['nome'];
$sexo = $_POST['sexo'];
$nascimento = $_POST['nascimento'];
$idade = $_POST['idade'];
$estadoCivil = $_POST['estadoCivil'];
$filho = $_POST['filho'];
$quantidadeFilho = $_POST['quantidade'];
$quantidadeFilho = (int) $quantidadeFilho;
$profissao = $_POST['profissao'];
$cep = $_POST['cep'];
$rua = $_POST['rua'];
$numero = $_POST['numero'];
$complemento = $_POST['complemento'];
$bairro = $_POST['bairro'];
$cidade = $_POST['cidade'];
$estado = $_POST['estado'];
$email = $_POST['email'];
// Variaveis abaixo pertencem outra etapa do formulário
$indicacao = '';
$nomeProfissional = '';
$especialidade = '';
$dddProfissional = '';
$telefoneProfissional = '';
$enfermidade = '';
$descricaoEnfermidade = '';
$remedio = '';
$descricaoRemedio = '';
$atividadeFisica = '';
$problema = '';
$diagnostico = '';
$evolucao = '';
$statusPaciente = '';
$status = 1;
$objetoPaciente -> setDataCadastro($dataCadastro);
$objetoPaciente -> setNome($nome);
$objetoPaciente -> setSexo($sexo);
$objetoPaciente -> setDataNascimento($nascimento);
$objetoPaciente -> setIdade($idade);
$objetoPaciente -> setEstadoCivil($estadoCivil);
$objetoPaciente -> setFilho($filho);
$objetoPaciente -> setQuantidadeFilho($quantidadeFilho);
$objetoPaciente -> setProfissao($profissao);
$objetoPaciente -> setCep($cep);
$objetoPaciente -> setRua($rua);
$objetoPaciente -> setNumero($numero);
$objetoPaciente -> setComplemento($complemento);
$objetoPaciente -> setBairro($bairro);
$objetoPaciente -> setCidade($cidade);
$objetoPaciente -> setEstado($estado);
$objetoPaciente -> setEmail($email);
$objetoPaciente -> setIndicacao($indicacao);
$objetoPaciente -> setNomeProfissional($nomeProfissional);
$objetoPaciente -> setEspecialidade($especialidade);
$objetoPaciente -> setDddProfissional($dddProfissional);
$objetoPaciente -> setTelefoneProfissional($telefoneProfissional);
$objetoPaciente -> setEnfermidade($enfermidade);
$objetoPaciente -> setDescricaoEnfermidade($descricaoEnfermidade);
$objetoPaciente -> setRemedio($remedio);
$objetoPaciente -> setDescricaoRemedio($descricaoRemedio);
$objetoPaciente -> setAtividadeFisica($atividadeFisica);
$objetoPaciente -> setProblema($problema);
$objetoPaciente -> setDiagnostico($diagnostico);
$objetoPaciente -> setEvolucao($evolucao);
$objetoPaciente -> setStatusPaciente($statusPaciente);
$objetoPaciente -> setStatus($status);
// inserir no banco
$objetoPacienteController -> inserirPaciente($objetoPaciente);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, utilize registre e joga fora essa porcaria de Conexão!

https://github.com/alwarren/php.registry

Mas segue.

Observação, novos problemas, que não for o de conexão, abra um novo tópico.

<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'bd_natercia');
define('DB_USER', 'root');
define('DB_PASS', '');

class Connection
{
    private static $instance;
    
    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            try {

                self::$instance = new PDO( sprintf('mysql:host=%s;dbname=%s', DB_HOST, DB_NAME), DB_USER, DB_PASS);
      
                self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
            catch (PDOException $e) {
                echo " Erro !" . $e->getMessage();
            }
        }
        return self::$instance;
    }
    
    public static function prepare($sql)
    {
        return self::getInstance()->prepare($sql);
    }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa classe sua você pegou na net, bem batida por aqui, mas te deixa engessado, só pode usar um banco somente. Com registry não, voce pode ter quantos bancos e SGBDs quiser.

Exemplo

Configurações com dois bancos do mysql

database.php

<?php

class DATABASE_CONFIG {

	public $default = array(

		'host' => 'localhost',
		'login' => 'root',
		'password' => '123456',
		'database' => 'nome_do_banco',

	);


	
	public $test = array(

		'host' => 'localhost',
		'login' => 'root',
		'password' => '123456',
		'database' => 'test',

	);

}

usando na conexão PDO com registry

conn.default.php

<?php

require_once 'database.php';

$database = new DATABASE_CONFIG();

try {

	
	$options = array(
		PDO::ATTR_PERSISTENT => true,
		PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8; SET CHARACTER SET UTF8; SET character_set_connection=UTF8; SET character_set_client=UTF8;',
		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
	);

	$dsn = sprintf( 'mysql:host=%s;dbname=%s;', $database->default['host'], $database->default['database'] );

	$pdo = new \PDO( $dsn, $database->default['login'], $database->default['password'], $options);

	//Setando a registry pdo
	require_once 'registry.php';
	registry::getInstance()->set('pdo', $pdo);

} catch (PDOException $e) {

	//DatabaseException::errorDb( $e->getMessage() );

}

uso nas DAOs

$pdo = registry::getInstance()->get('pdo');

$pdo->prepare( ... );

outro banco


conn.test.php

<?php

require_once 'database.php';

$database = new DATABASE_CONFIG();

try {

	
	$options = array(
		PDO::ATTR_PERSISTENT => true,
		PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8; SET CHARACTER SET UTF8; SET character_set_connection=UTF8; SET character_set_client=UTF8;',
		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
	);

	$dsn = sprintf( 'mysql:host=%s;dbname=%s;', $database->test['host'], $database->test['database'] );

	$pdo = new \PDO( $dsn, $database->test['login'], $database->test['password'], $options);

	//Setando a registry pdo
	require_once 'registry.php';
	registry::getInstance()->set('test', $pdo);

} catch (PDOException $e) {

	//DatabaseException::errorDb( $e->getMessage() );

} 

uso

$test = registry::getInstance()->get('test');

$test->prepare( ... );

Outra coisa, aprenda a usar o autoload composer, alem de carregar suas classes evitando esses require, vai gerenciar suas dependências.

https://getcomposer.org/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

Depois de muito stress! ....rsrsr .... UFA ...rsrsr até quem fim ... Eis que consegui fazer essa p**** funcionar ...rsrsr

Não era problema da classe de conexão com o banco .... rsrsr as duas classes de conexão ao banco estavam funcionando perfeitamente. O problema era na pacienteDao ... enfim fiz por bindValue e funcionou ...rsrsr

E agradeço Williams Duarte por toda atenção e dedicação que teve em resolver meu caso. Hoje em dia é difícil encontrar pessoas que queiram ajudar ao próximo. No momento estou envolvido nesse projeto, mas tbm desejo ajudar outros colegas que tbm passaram pela mesma dificuldade. A graça de programar é ver tudo funcionando redondinho ...rsrsr

Segue o código abaixo da classe pacienteDao:

<?php
include_once('paciente.php');
include_once('pacienteInterface.php');
class PacienteDao implements PacienteInterface
{
public function inserirPaciente(paciente $objetoPaciente)
{
try
{
$sql = 'INSERT INTO paciente (data_cadastro, nome, sexo, data_nascimento, idade, estado_civil, filho, quantidade_filhos, profissao, cep, rua, numero, complemento, bairro, cidade, estado, email, indicacao, nome_profissional, especialidade, ddd_profissional, telefone_profissional, enfermidade, descricao_enfermidade, remedio, descricao_remedio, atividade_fisica, problema, diagnostico, evolucao, status_paciente, ativo)
VALUES (:dataCadastro, :nome, :sexo, :dataNascimento, :idade, :estadoCivil, :filho,
:quantidadeFilho, :profissao, :cep, :rua, :numero, :complemento, :bairro,
:cidade, :estado, :email, :indicacao, :nomeProfissional, :especialidade,
:dddProfissional, :telefoneProfissional, :enfermidade, :descricaoEnfermidade, :remedio, :descricaoRemedio, :atividadeFisica, :problema, :diagnostico,
:evolucao, :statusPaciente, :ativo)';
$stmt = Connection::prepare($sql);
$stmt -> bindValue(":dataCadastro",$objetoPaciente->getdataCadastro());
$stmt -> bindValue(":nome",$objetoPaciente->getNome());
$stmt -> bindValue(":sexo",$objetoPaciente->getSexo());
$stmt -> bindValue(":dataNascimento",$objetoPaciente->getDataNascimento());
$stmt -> bindValue(":idade",$objetoPaciente->getIdade());
$stmt -> bindValue(":estadoCivil",$objetoPaciente->getEstadoCivil());
$stmt -> bindValue(":filho",$objetoPaciente->getFilho());
$stmt -> bindValue(":quantidadeFilho",$objetoPaciente->getQuantidadeFilho());
$stmt -> bindValue(":profissao",$objetoPaciente->getprofissao());
$stmt -> bindValue(":cep",$objetoPaciente->getCep());
$stmt -> bindValue(":rua",$objetoPaciente->getRua());
$stmt -> bindValue(":numero",$objetoPaciente->getNumero());
$stmt -> bindValue(":complemento",$objetoPaciente->getComplemento());
$stmt -> bindValue(":bairro",$objetoPaciente->getBairro());
$stmt -> bindValue(":cidade",$objetoPaciente->getCidade());
$stmt -> bindValue(":estado",$objetoPaciente->getEstado());
$stmt -> bindValue(":email",$objetoPaciente->getEmail());
$stmt -> bindValue(":indicacao",$objetoPaciente->getIndicacao());
$stmt -> bindValue(":nomeProfissional",$objetoPaciente->getNomeProfissional());
$stmt -> bindValue(":especialidade",$objetoPaciente->getEspecialidade());
$stmt -> bindValue(":dddProfissional",$objetoPaciente->getDddProfissional());
$stmt -> bindValue(":telefoneProfissional",$objetoPaciente->getTelefoneProfissional());
$stmt -> bindValue(":enfermidade",$objetoPaciente->getEnfermidade());
$stmt -> bindValue(":descricaoEnfermidade",$objetoPaciente->getDescricaoEnfermidade());
$stmt -> bindValue(":remedio",$objetoPaciente->getRemedio());
$stmt -> bindValue(":descricaoRemedio",$objetoPaciente->getDescricaoRemedio());
$stmt -> bindValue(":atividadeFisica",$objetoPaciente->getAtividadeFisica());
$stmt -> bindValue(":problema",$objetoPaciente->getProblema());
$stmt -> bindValue(":diagnostico",$objetoPaciente->getDiagnostico());
$stmt -> bindValue(":evolucao",$objetoPaciente->getEvolucao());
$stmt -> bindValue(":statusPaciente",$objetoPaciente->getStatusPaciente());
$stmt -> bindValue(":ativo",$objetoPaciente->getStatus());
$stmt -> execute();
} catch (PDOException $e) {
print "Ocorreu um erro ao tentar executar esta ação, tente mais tarde." . " <br>Erro na Linha: " . $e -> getLine() . "<br> Código do Erro: ". $e -> getCode() . "<br>Arquivo:". $e -> getFile(). "<br> MENSAGEM:". $e -> getMessage();
}
}
?>

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.