"Insert value list does not match column list" error with PDO

1

Hello, I've done a questionnaire, and it's returning the following error:

    Error: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1
Warning: Cannot modify header information - headers already sent by (output started at /home/swdig809/public_html/class.conexao.php:2) in /home/swdig809/public_html/pesquisa/envia.php on line 35

I believe this is because some of the questions are answered with RADIO

How do I structure the database to save this data type? and how should I handle this in code.

Follow the files:

form.php

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="stylesheet" href="../css/bootstrap.min.css">
        <style>
            body {
                padding-top: 50px;
                padding-bottom: 20px;
            }
        </style>
        <link rel="stylesheet" href="../css/bootstrap-theme.min.css">
        <link rel="stylesheet" href="../css/main.css">
        <link rel="stylesheet" href="form.css">
        <script src="../js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
    </head>
    <body>
<form id="form-pesquisa" action="envia.php">
    <h1>Cadastro Empresa</h1>
    <label for="nome_empresa">Empresa:</label>
    <input type="text" placeholder="Nome da Empresa" name="nome_empresa" id="nome_empresa"/><br>
    <label for="nome_resp">Nome Responsavel:</label>
    <input type="text" placeholder="Nome da pessoa" name="nome_resp" id="nome_resp"/><br>
    <label for="funcao">Função:</label>
    <input type="text" placeholder="Nome da Empresa" name="funcao" id="funcao"/><br>
    <hr>
    <h2>PERGUNTAS</h2>
    <h2>A EMPRESA É:</h2><br><br>
    <input type="radio" name="tipo" id="comercio" value="comercio"/>
    <label for="comercio">Comércio</label>
    <hr>
    <input type="radio" name="tipo" id="industria" value="industria"/>
    <label for="industria">Industria</label>
    <hr>
    <input type="radio" name="tipo" id="servicos" value="serviços"/>
    <label for="servicos">Serviços</label>
    <hr>
    <br><br><hr><hr><hr><hr><br>
    <h2>SEU PUBLICO É:</h2><br><br>
    <input type="radio" name="publico" id="empresasEcomercios" value="empresasEcomercios"/>
    <label for="empresasEcomercios">Comércio / Empresas</label><hr>
    <input type="radio" name="publico" id="consumidorFinal" value="Consumidor Final"/>
    <label for="consumidorFinal" >Consumidor final</label><hr>
    <input type="radio" name="publico" id="theBoth" value="Um pouco dos dois"/>
    <label for="theBoth">Um pouco dos dois</label><hr>
        <br><br><hr><hr><hr><hr><br>
    <h2>SEU PUBLICO COSTUMA USAR A INTERNET?</h2><br><br>
    <input type="radio" name="publicoInternet" id="SimBastante" value="Bastante"/>
    <label for="SimBastante">Sim, bastante.</label><hr>
    <input type="radio" name="publicoInternet" id="moderadamente" value="Moderadamente"/>
    <label for="moderadamente" >Sim, moderadamente.</label><hr>
    <input type="radio" name="publicoInternet" id="naoUsa" value="Não usa"/>
    <label for="naoUsa">Não, não usa.</label><hr>
    <input type="radio" name="publicoInternet" id="naoSei" value="Não sei"/>
    <label for="naoSei">Não sei.</label><hr>
    <br><br><hr><hr><hr><hr><br>
    <h2>QUANTOS CONCORRENTES DIRETOS VOCÊ TEM?</h2><br><br>
    <input type="radio" name="concorrentes" id="mais10" value="+ de 10"/>
    <label for="mais10">+ de 10.</label><hr>
    <input type="radio" name="concorrentes" id="mais5" value="+ de 5"/>
    <label for="mais5" >+ de 5.</label><hr>
    <input type="radio" name="concorrentes" id="menos5" value="Não usa"/>
    <label for="menos5">- de 5.</label><hr>
    <input type="radio" name="concorrentes" id="naoSei2" value="Não sei"/>
    <label for="naoSei2">Não sei.</label><hr>
    <br><br><hr><hr><hr><hr><br>
    <h2>SEUS CONCORRENTES ESTÃO ONLINE?</h2><br><br>
    <input type="radio" name="concorrentesInternet" id="SimBastante3" value="Bastante"/>
    <label for="SimBastante3">Sim, bastante.</label><hr>
    <input type="radio" name="concorrentesInternet" id="moderadamente3" value="Moderadamente"/>
    <label for="moderadamente3" >Sim, moderadamente.</label><hr>
    <input type="radio" name="concorrentesInternet" id="naoUsa3" value="Não usa"/>
    <label for="naoUsa3">Não, não usa.</label><hr>
    <input type="radio" name="concorrentesInternet" id="naoSei3" value="Não sei"/>
    <label for="naoSei3">Não sei.</label><hr>
     <br><br><hr><hr><hr><hr><br>
    <h2>VOCÊ COSTUMA INVESTIR EM MARKETING?</h2><br><br>
    <input type="radio" name="investirMarketing" id="SimBastante4" value="Bastante"/>
    <label for="SimBastante4">Sim, bastante.</label><hr>
    <input type="radio" name="investirMarketing" id="moderadamente4" value="Moderadamente"/>
    <label for="moderadamente4" >Sim, moderadamente.</label><hr>
    <input type="radio" name="investirMarketing" id="naoUsa4" value="Não investe"/>
    <label for="naoUsa4">Não, não invisto.</label><hr>
    <br><br><hr><hr><hr><hr><br>
    <h2>Se sim, qual tipo. Se não, porque ?:</h2><br>
    <input type="text" placeholder="Inserir texto" name="qualeporque" id="qualeporque"/>
   <br><br><hr><hr><hr><hr><br>
    <h2>SE INTERESSA PELO ASSUNTO?</h2><br><br>
    <input type="radio" name="interesse" id="SimBastante5" value="Bastante"/>
    <label for="SimBastante5">Sim, bastante.</label><hr>
    <input type="radio" name="interesse" id="moderadamente5" value="Moderadamente"/>
    <label for="moderadamente5" >Sim, moderadamente.</label><hr>
    <input type="radio" name="interesse" id="naoUsa5" value="Não se interessa"/>
    <label for="naoUsa5">Não, se interessa.</label><hr>
    <input type="radio" name="interesse" id="naoSei5" value="Não sei"/>
    <label for="naoSei5">Não sei.</label><hr>
    <br><br><hr><hr><hr><hr><br>
    <h2>GOSTARIA DE CONHECER OS SERVIÇOS E PREÇOS DA SW DIGITAL?</h2><br><br>
    <input type="radio" name="proposta" id="SimBastante6" value="Pode Mandar"/>
    <label for="SimBastante6">Sim, pode me mandar.</label><hr>
    <input type="radio" name="proposta" id="moderadamente6" value="Pode Mandar, mas me ligue"/>
    <label for="moderadamente6" >Sim, mas não tenho tempo.</label><hr>
    <input type="radio" name="proposta" id="naoUsa6" value="Não enviar"/>
    <label for="naoUsa6">Não, não quero.</label><hr>
    <br><br><hr><hr><hr><hr><br>
    <h2>Porque ?:</h2><br>
    <input type="text" placeholder="Inserir texto" name="porqueinteresse" id="porqueinteresse"/>
    <br><br><hr><hr><hr><hr><br>
        <br><br><hr><hr><hr><hr><br>
    <h2>Email ?:</h2><br>
    <input type="email" placeholder="email" name="email" id="email"/>
    <br><br><hr><hr><hr><hr><br>
    <button type="submit">ENVIAR</button>
</form>

CLASS.CONEXAO.PHP:

<?php 
class Conexao {
    private $data = array();
    //variavel da classe Base
    protected $pdo = null;

    public function __set($name, $value){
        $this->data[$name] = $value;
    }

    public function __get($name){
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }

        $trace = debug_backtrace();
        trigger_error(
            'Undefined property via __get(): ' . $name .
            ' in ' . $trace[0]['file'] .
            ' on line ' . $trace[0]['line'],
            E_USER_NOTICE);
        return null;
    }

    //método que retorna a variável $pdo
    public function getPdo() {
        return $this->pdo;
    }

    //método construtor da classe
    function __construct($pdo = null) {
        $this->pdo = $pdo;
        if ($this->pdo == null)
            $this->conectar();
    }

    //método que conecta com o banco de dados
    public function conectar() {            
        $local = "localhost";
        $user = "root";
        $pass = "";
        $basename = "diner210";

        try {
            $this->pdo = new PDO("mysql:host=$local;dbname=$basename",
                            "$user",
                            "$pass",
                            array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        } catch (PDOException $e) {
            print "Error!: " . $e->getMessage() . "<br/>";
            die();
        }
    }


    //método que desconecta
    public function desconectar() {
        $this->pdo = null;
    }

        public function select($statement){
        $pdo = $this->getPdo();  
        $sth = $pdo->prepare($statement);    
        $sth->execute();    
        $result = $sth->fetchAll();  
        return $result;
    }
}

? >

and SEND.PHP

<?php

    //inclui as bibliotecas
    require_once('../class.conexao.php');
    //faz a canexão 
    $pdo = new Conexao();



try { 
    $pdo = new PDO('mysql:host=localhost;dbname=swdig809_pesquisa', 'swdig809_denis', '123123', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $pdo = $pdo->prepare('INSERT INTO empresas VALUES(DEFAULT, :nome_empresa, :nome_resp, :funcao, :tipo, :publico, :publicoInternet, :concorrentes, :concorrentesInternet, :investirMarketing, :interesse, :email)'); //Preparando os dados
    $pdo->bindValue( ':nome_empresa' , $_REQUEST['nome_empresa']); // recebendo dados do formulario
    $pdo->bindValue( ':nome_resp' , $_REQUEST['nome_resp']); 
    $pdo->bindValue( ':funcao' , $_REQUEST['funcao']); 
    $pdo->bindValue( ':tipo' , $_REQUEST['tipo']); 
    $pdo->bindValue( ':publico' , $_REQUEST['publico']); 
    $pdo->bindValue( ':publicoInternet' , $_REQUEST['publicoInternet']); 
    $pdo->bindValue( ':concorrentes' , $_REQUEST['concorrentes']); 
    $pdo->bindValue( ':concorrentesInternet' , $_REQUEST['concorrentesInternet']); 
    $pdo->bindValue( ':investirMarketing' , $_REQUEST['investirMarketing']); 
    $pdo->bindValue( ':interesse' , $_REQUEST['interesse']); 
    $pdo->bindValue( ':email' , $_REQUEST['email']); 




    $pdo->execute(); // salvando no banco
    print $pdo->rowCount(); // retorna quantas linhas foram alteradas.

     } catch(PDOException $e) { 
        echo 'Error: ' . $e->getMessage();}

 header('location: index.php');

?>
    
asked by anonymous 22.05.2015 / 07:32

1 answer

2

The error says that the number of values passed is different from the number of columns, you can solve this by specifying the names of the columns in the insert.

insert into tabela (c1, c2, c3) values (:c1, :c2, :c3)
    
22.05.2015 / 13:03