Sending form to database with Mysql, Html and php [duplicate]

2

I'm trying to send to a mysql database the data written by a form. I have created a DB 'db_provida' and a tableau 'testimony' with 4 columns. I can not make this code write to the registry. Here the components:
Table 'testimony':  

htmlcode:

<formaction="testemunho.php" method="post">
    Nome: <input type="text" name="nome"/>
    <br>
    Email: <input type="text" name="email"/>
    <br>
    Testemunho: <textarea name="testemunho" rows="10" cols="80"></textarea> <br/><br/>
    <input type="submit" value="Enviar"/>
</form>

E php code :

<?php
    //verifica se existe conexão com bd; caso não tenta, cria uma nova
    $conexao = mysql_connect('localhost','giuseppe','joanin21') //porta, usuário, senha
    or die("Erro na conexão com banco de dados"); //caso não consiga conectar mostra a mensagem de erro mostrada na conexão

    $select_db = mysql_select_db("db_provida"); //seleciona o banco de dados

    //Abaixo atribuímos os valores provenientes do formulário pelo método POST
    $nome = $_POST['nome']; 
    $email = $_POST['email'];
    $testemunho = $_POST['testemunho'];

    $string_sql = "INSERT INTO testemunho (id,nome,email,testemunho) VALUES (null,'$nome','$email','$testemunho')"; //String com consulta SQL da inserção

    mysql_query($string_sql,$conexao); //Realiza a consulta

    if(mysql_affected_rows() == 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
        echo "<p>Testemunho Registrado</p>";
        echo '<a href="testimonianze.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
    } else {
        echo "Erro, não foi possível inserir no banco de dados";
    }

    mysql_close($conexao); //fecha conexão com banco de dados 
?>
    
asked by anonymous 24.08.2017 / 13:59

2 answers

0

I ran your script with PHP 5.4.43 and ran it right!

Only if (isset($_POST... is missing so there is no insert when entering the page, because the way you are going to insert null fields when accessing the page. Then filling in the fields will insert it right!

Your case should be as explained below.

The mysql_connect , mysql_affected_rows functions were deprecated in PHP 5.5.0 and the mysql_ * functions were removed in PHP7! Learn more with

Enjoy the occasion and upgrade!

With MySQLi the connection can be made as follows :

//aqui é só um exemplo para não rodar o script abaixo sem necessidade
if ((isset($_POST['email']))&&(!empty($_POST['email']))){

   //porta, usuário, senha, nome data base
   //caso não consiga conectar mostra a mensagem de erro mostrada na conexão
   $conexao = mysqli_connect("localhost", "giuseppe", "joanin21", "db_provida") or die("Erro na conexão com banco de dados " . mysqli_error($conexao));

  //Abaixo atribuímos os valores provenientes do formulário pelo método POST
  $nome = $_POST['nome']; 
  $email = $_POST['email'];
  $testemunho = $_POST['testemunho'];

   $string_sql = "INSERT INTO testemunho (id,nome,email,testemunho) VALUES (null,'$nome','$email','$testemunho')";
   $insert_member_res = mysqli_query($conexao, $string_sql);
   if(mysqli_affected_rows($conexao)>0){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha
       echo "<p>Testemunho Registrado</p>";
       echo '<a href="testimonianze.html">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro
   } else {
       echo "Erro, não foi possível inserir no banco de dados";
   }
   mysqli_close($conexao); //fecha conexão com banco de dados
}else{
    echo "Por favor, preencha os dados";
}
    
24.08.2017 / 19:17
0

The query that you put in the variable $string_sql is considering the variables $nome, $email e $testemunho as a string. The right way to do this, ie, the variables are not considered string, it has to be done like this:

$string_sql = "INSERT INTO testemunho (id,nome,email,testemunho) VALUES (null,'{$nome}','{$email}','{$testemunho}')"; //String com consulta SQL da inserção
    
24.08.2017 / 14:12