Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
Estou aprendendo PDO e já de cara esbarrei num erro que não estou conseguindo resolver, agradeço desde já quem puder me ajudar neste ponto.
O erro que está apresentando é este abaixo, ao tentar realizar o INSERT:
**Fatal error**: Call to a member function prepare() on a non-object in **C:\xampp\htdocs\testando\recebe_cliente_teste_pdo.php** on line **13**
Que corresponde a este trecho do código do INSERT: $create = $banco->prepare($sql);
Código da conexão que está ok!:
<?php
header("Content-Type: text/html; charset=UTF-8",true);
function conectar() {
$conexao = 'mysql:host=localhost;dbname=testando';
try {
$banco = new PDO($conexao, 'root', 'camelo69');
$banco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
if ($e->getCode() == 1049) {
echo "Não foi possivel fazer a conexão com o Servidor </br>";
} elseif ($e->getCode() == 1045) {
echo "Não foi possivel fazer a conexão com o Servidor, favor verificar a senha do Banco de Dados </br>";
} else {
echo $e->getMessage();
}
}
}
?>
Código do INSERT:
<?php
header("Content-Type: text/html; charset=UTF-8",true);
include("bd/conexao_pdo.php");
$banco=conectar();
$txtUf = $_POST['idUf'];
echo $txtUf . '</br>';
$sql = 'INSERT INTO tb_uf (uf_descricao) VALUES (:idUf)';
try {
$create = $banco->prepare($sql);
$create->bindValue(":idUf", $txtUf, PDO::PARAM_STR);
if ($create->execute()) {
echo "Dados gravados com sucesso";
}
} catch (Exception $e) {
echo "Erro ao gravar os dados" . $e->getMessage();
}
}Putz, é mesmo, esqueci de colocar o return na função......
Saberia de orientar como capturar o ID deste registro após o INSERT? Tentei com o lastInsertId() mas não funciona....
if ($create->execute()) {
echo "Dados gravados com sucesso #" + $banco->lastInsertId();
}VAleu cahe7cb, fiz aqui e deu tudo certo, muito obrigado!
Sua função "conectar" não está retornando a conexão.