Duvida para gravar Dados

12/07/2013

0

PHP

Boa tarde! Amigos estou com mais uma duvida em php, mas agora e na hora de gravar os dados, vejam só.

tenho uma database em mysql chamado cphp;
tenho a tabela como o nome dados (bem simples com dois campos chave e observacao)
beleza em mysql sem problema nenhum mas a duvida e no php para gravar:
tenho código abaixo só para gravar no banco mysql

<?php
$conectar = mysql_connect("localhost","root","");
$SelecionaBD = mysql_select_db("cphp",$conectar);
$InstSQL = "insert into dados (chave, observacao) values(1,'Gilberto')";
$retorno = mysql_query($InstSQL,$conectar);
mysql_close($conectar);
?>


quando eu executo o script no browse não tenho retorno de erro e nenhum dado gravado no banco.
Gostaria de saber se alguém pode me ajudar com este código colocando um comentário onde esta o erro com a correção.


Desde já agradeço.
Gilberto Santos

Gilberto Santos

Responder

Posts

12/07/2013

William

Colega muito estranho esse seu script não estar gravando os dados, aparentemente está correto. Verifique os tipos dos campos e tente inserir os dados direto no banco usando essa mesma instrução SQL.

Comentei o código:

<?php
/*
* Conecta-se ao SGBD MySQL passando 3 parâmetros
* @param servidor
* @param username
* @param password
*/
$conectar = mysql_connect("localhost","root","");

/*
* Define o banco de dados ativo para transações passando 2 parâmetros
* @param nome do banco de dados
* @param conexão válida 
*/
$SelecionaBD = mysql_select_db("cphp",$conectar);

/*
* Atribui a instrução SQL de INSERT para uma variável
*/
$InstSQL = "insert into dados (chave, observacao) values(1,'Gilberto')";

/*
* Executa a instrução de INSERT e captura o retorno passando 2 parâmetros
* @param instrução SQL
* @param conexão válida
*/
$retorno = mysql_query($InstSQL,$conectar);

/*
* Fecha a conexão
*/
mysql_close($conectar);
?>


OBS.: Uma dica, se estiver iniciando em PHP, procure usar PDO para interagir com o banco de dados. As funções "mysql_" estão ultrapassadas, existe outra no lugar que trás algumas melhorias "mysqli_", mas ainda prefiro PDO por vários motivos.

Qualquer dúvida poste novamente ...
Responder

12/07/2013

Gilberto Santos

wllfl obrigado pelo retorno, achei o problema, era um erro de digitação o problema foi resolvido. Vc comentou sobre o PDO certo? E muito complicado?
Responder

13/07/2013

William

Olá Gilberto, abaixo criei um pequeno script usando PDO baseado no seu exemplo. Comentei grande parte do código, mas existem inúmeras configurações que podem ser feitas utlizando PDO.

Entre as vantagens em utilizar esse tipo de conexão, destaco:
- Abstração de conexões e interações com banco de dados (Se não forem executadas instruções SQLs especificas de cada banco, você pode migrar de SGBD apenas modificando o construtor PDO).
- Segurança (prepared statements auxíliam na prevenção de ataques SQL injection)
- Suporte a diversos drivers
- Velocidade

<?php

/*
* Cria uma array com opções de configuração para conexão
* nesse caso estou setando como valor o comando 'SET NAMES UTF8'
* esse comando será executado toda vez que for iniciada uma conexão
* setando o charset do banco com o valor 'UTF8'.
*/
$opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');

/*
* Executa o construtor PDO para conexão com SGBD MySQL passando 4 parâmetros
* @param host e dbname
* @param user
* @param password
* @param $array (opções específicas do driver nesse caso MySQL)
*/
$pdo = new PDO("mysql:host=localhost; dbname=cphp","root","", $opcoes);
 
/*
* Atribui a instrução SQL de INSERT para uma variável
* no local dos valores para inserções uso '?' informando
* que será passado como parâmetro e na mesma ordem.
*/
$InstSQL = "insert into dados (chave, observacao) values(?,?)";
 
/*
* Prepara a instrução SQL passando 1 parâmetro
* @param instrução SQL
*/
$stm = $pdo->prepare($InstSQL);

/*
* Substitui os parâmetros '?' que foram informados na instrução SQL na mesma ordem.
*/
$stm->bindValue(1, 1);
$stm->bindValue(2, 'Gilberto');

/*
* Executa o comando e captura o retorno.
*/
$retorno = $stm->execute();
 
/*
* Libera as variáveis
*/
unset($stm);
unset($pdo);

?>


Existe muito material na net sobre PDO inclusive o tópico de banco de dados para quem pretende tirar certificação PHP é baseado em PDO.
Espero ter ajudado, qualquer dúvida poste novamente ...
Responder

13/07/2013

Marcio Araujo

isso muito me interessa, peguei esse codigo para estudar, obrigado pela duvida e pela resposta.
Responder

13/07/2013

Gilberto Santos

BLZ wllfl obrigado vou me empenhar com estas informações.
Responder

20/08/2013

Gilberto Santos

senhores, por favor, fechar este topico
Responder

20/08/2013

Marcio Araujo

alguem pode fechar?
Responder

23/08/2013

William

Estou encerrando o post!!!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar