Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Comecei estudar PDO e estou com um probleminha aqui, consigo fazer a conexão com o banco de dados normalmente com o seguinte code:
<?php
define('HOST','localhost');
define('DB','teste');
define('USER','root');
define('PASS','123');
$conexao = 'mysql:host='.(HOST).';dbname='.(DB);
try{
$conecta = new PDO($conexao,USER,PASS);
$conecta->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch (PDOexception $ec){
echo 'Erro ao conectar'.$ec->getMessage();
}
?>
Porém não consigo inserir dados no banco de dados em localhost. Fiz testes no meu host online e os dados são inseridos normalmente, sendo assim creio que seja um problema de configuração do PDO no php, habilitei as extensões como diz no manual exceto a: extension=php_pdo.dll pois segundo o manual php 5.3.xxx não é mais necessário. Uso windows seven, pode ser algum problema de permissão? pois quando configurei o apache,php e mysql para conectar com o banco tive que fazer uma configuração no arquivo host do windows
Code insert:
<?php
include"config.php";
$campo = 'teste';
try{
$query_teste = $conecta->prepare('INSERT INTO table (campo1) VALUES (:campo)');
$query_teste->bindValue(':campo',$campo,PDO::PARAM_STR);
$query_teste->execute();
echo 'Cadastro com sucesso!';
}catch (PDOexception $e){
echo 'Erro ao cadastrar '.$e->getMessage();
}
?>
Minhas configs:
PHP: 5.3.5
Mysql: 5.5
Windows Seven
Já tentei habilitar, mas após habilitar nem chega a statar o servidor, pelo que vi no manual versões 5.3.xxx não precisa mais habilitar essa extensão.
coloquei as linhas:
ini_set( 'display_errors', true );
error_reporting( E_ALL );
mas não me retornou nada além do que ja vinha me mostrando:
Erro ao cadastrar SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (campo1,campo2) VALUES ('teste','teste')' at line 1
Então, O erro é de syntax no SQL, por isso não cadastra no banco de dados.
As versões do MySQL são as mesmas ?
Poste o SQL.
Creio que não Carlos, pois só não insert em localhost, no meu host online funciona normalmente.
segue:
<?php
include"config.php";
$campo = 'teste';
try{
$query_teste = $conecta->prepare('INSERT INTO table (campo1) VALUES (:campo)');
$query_teste->bindValue(':campo',$campo,PDO::PARAM_STR);
$query_teste->execute();
echo 'Cadastro com sucesso!';
}catch (PDOexception $e){
echo 'Erro ao cadastrar '.$e->getMessage();
}
?>>
Creio que não Carlos, pois só não insert em localhost, no meu host online funciona normalmente.
>
mas não me retornou nada além do que ja vinha me mostrando:
Erro ao cadastrar SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (campo1,campo2) VALUES ('teste','teste')' at line 1
Syntax error or access violation: 1064 You have an error in your SQL syntax;
Alguma ideia do que possa ser o problema? pode ser erro de syntax no SQL funcionando perfeitamente no meu host?
o banco de dados local está sincronizado com o do host?
está com as mesmas tabelas e campos, etc?
verifique isso
Não Custellinha, não está sincronizado, bancos separados. testei online para sair da duvida, online está com as mesmas tabelas, campos etc...
Bom dia pessoal, consegui fazer o insert, obrigados a todos que responderam esse tópico infelizmente o PDO parece não ser tão comum assim.
Solução:
Para testar eu tinha criado uma tabela com o nome TABLE, parece besteira, apenas troquei o nome da tabela e funcionou certinho o insert, select etc..
Podem fechar o tópico
Já tentou abilitar extension=php_pdo.dll ?
Minhas configurações são as mesmas e meu php.ini nem tem essa php_pdo.dll
EDIT:
Configure seu código para exibir TODAS as mensagens de erro, adicionando este código à primeira linha do script.