Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, to com um problema aqui no meu PDO, é o seguinte, eu criei essa função:
private function pdoStatementTratamento($sql, $dados){
try{
$stmt = $this->con->prepare($sql);
for($i=1;$i<=count($dados);$i++)
$stmt->bindValue($i, $dados[$i-1]);
if($stmt->execute())
return $stmt;
else
throw new Exception('Erro de Execução');
}catch(Exception $e){
print_r($this->con->errorInfo());
echo $e->getMessage();
}
}
Que como podem observar, ela recebe o sql e os dados, acontece que eu não estou conseguindo q ela exiba os erros, e mais um detalhe, quando uma variavel nao é preenchida, da erro ao se inserir.
eu Tow fazendo o tratamento, como segue o exemplo:
INSERT TB tabela(coluna1) VALUES(valor1) WHERE x = ?
$dado = array(0=>$valor);
Acontece q quando essa variavel $valor, tá vazia, ocorre um erro, o q fazer quanto a isso?? Colocar como NULL se estiver vazia???
Po, o sistema tem dezenas de consultas, iria repetir mt codigo nessa brincadeira, daee surgiu a ideia de criar uma função e centralizar td isso, até q ela tá funcionando mt bem e se tiver perda de processamento, é mt baixa, no mais, eu acho q ta valendo sim a pena. E detalhe, como eu trataria entao?? Dessa forma, nao esta tratando? nao entendi.
Certo, o PDO prepare, não retorna String .. só isso, então você nunca vai conseguir exibir o SQL.
Outra coisa, o bindValue apenas coloca os valores em seus devidos lugares, então ele não vai tratar nem vai fazer nada
desse jeito aqui:
$stmt->bindValue($i, $dados[$i-1]);
Você apenas está colocando os valores .. mais também não seta nenhuma propriedade pra ser colocada no SQL, como :nome, :sobrenome
Outra coisa, pra que reinventar a roda ? o PDO já é orientado, você vai orientar de novo, apenas pra fazer os binds .. não faz sentido, e nem utilidade .. apenas uma perda de processamento na qual poderia ser evitada fazendo o bind manualmente :D