Fórum Duvida para gravar Dados #448495
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
Curtir tópico
+ 0Posts
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 ...
Gostei + 0
12/07/2013
Gilberto Santos
Gostei + 0
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 ...
Gostei + 0
13/07/2013
Marcio Araujo
Gostei + 0
13/07/2013
Gilberto Santos
Gostei + 0
20/08/2013
Gilberto Santos
Gostei + 0
20/08/2013
Marcio Araujo
Gostei + 0
23/08/2013
William
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)