2
Hello, I’ve made 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 it’s because some of the questions are answered with RADIO
how should I structure the bank to save this type of data? and how should I treat this in the code.
Follow the files:
php form.
<!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 ENVIA.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');
?>
"Error: SQLSTATE[21S01]: Insert value list does not match column" is saying that the fields with their respective values, informed in your query, are not matching the fields of your table. Are you sure this is the right order? And that first field "DEFAULT" that you put in, that’s right?
– Dirty Old Man
please add the code
CREATE TABLE
from your table, will facilitate the identification of the error– Pedro Sanção