Duvida para gravar Dados
12/07/2013
0
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
Posts
12/07/2013
William
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 ...
12/07/2013
Gilberto Santos
13/07/2013
William
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 ...
13/07/2013
Marcio Araujo
13/07/2013
Gilberto Santos
Clique aqui para fazer login e interagir na Comunidade :)