Michael Grigsby
Michael Grigsby

Reputation: 12173

CodeIgniter not properly inserting sql data

$idgen = uniqid(rand(), false);
$churchName = $this->input->post('church_name');
$streetAddress = $this->input->post('street_address');
$locationalCity = $this->input->post('locational_city');
$locationalState = $this->input->post('locational_state');
$locationalZip = $this->input->post('locational_zip');
$locationalCountry = $this->input->post('locational_country');
$taxNum = $this->input->post('tax_exemption_number');**

$this->db->query("INSERT INTO church_repo (church_name, street_address, locational_address, locational_zip, locational_country, locational_city, overseer_account_id, tax_exemption_number, status) VALUES('{$churchName}', '{$streetAddress}', '{$locationalCity}', '{$idgen}', '{$locationalState}', '{$locationalZip}', '{$locationalCountry}', '{$taxNum}', 'pending')");

The code above isn't inserting correctly, in Ci I'm getting the following error:

Error Number: 1054

Unknown column 'locational_address' in 'field list'

INSERT INTO church_repo (church_name, street_address, locational_address, locational_zip, locational_country, locational_city, overseer_account_id, tax_exemption_number, status) VALUES('bgtg', 'ff', 'rgfr', '270284f1eec6e5bfd4', 'rgrd', 'bdtbdt', 'United States of America', '84894894894', 'pending')

Filename: C:\Workspace\htdocs\Jan-2012\Gospel-links.org\system\database\DB_driver.php

Line Number: 330

Upvotes: 0

Views: 538

Answers (4)

Ajeet  Sinha
Ajeet Sinha

Reputation: 2345

Try this just changed the order or insert to mach with column

$idgen = uniqid(rand(), false);
$churchName = $this->input->post('church_name');
$streetAddress = $this->input->post('street_address');
$locationalCity = $this->input->post('locational_city');
$locationalState = $this->input->post('locational_state');
$locationalZip = $this->input->post('locational_zip');
$locationalCountry = $this->input->post('locational_country');
$taxNum = $this->input->post('tax_exemption_number');**

$this->db->query("INSERT INTO church_repo (church_name, street_address, locational_address, locational_zip, locational_country, locational_city, overseer_account_id, tax_exemption_number, status) VALUES('{$churchName}', '{$streetAddress}', '{$locationalCity}', '{$locationalZip}', '{$locationalState}', '{$locationalCountry}', '{$idgen}', '{$taxNum}', 'pending')");

Upvotes: 0

Damien Pirsy
Damien Pirsy

Reputation: 25445

The error is self-explanatory: there's no "locational_address" field, as already pointed out by d2byrke, so you should start by checking that.

Might be "street_address", maybe?

As an addendum, you're not escaping the values you enter in your DB; use query bindings, if you don't want to use Active Record:

$churchName = $this->input->post('church_name');
$streetAddress = $this->input->post('street_address');
$locationalCity = $this->input->post('locational_city');
$locationalState = $this->input->post('locational_state');
$locationalZip = $this->input->post('locational_zip');
$locationalCountry = $this->input->post('locational_country');
$taxNum = $this->input->post('tax_exemption_number');

$sql = "INSERT INTO church_repo(church_name, street_address, locational_address, locational_zip, locational_country, locational_city, overseer_account_id, tax_exemption_number, status) VALUES(?,?,?,?,?,?,?,?,?)";

$this->db->query($sql, array($churchName,$streetAddress,$locationalCity,$locationalState,$locationalZip,$locationalChurch,$taxnum,'pending');

Or, even cleaner (and protected) with Active Record:

    $field['church_name'] = $this->input->post('church_name');
    $field['street_address'] = $this->input->post('street_address');
    $field['locational_city'] = $this->input->post('locational_city');
    $field['locational_state'] = $this->input->post('locational_state');
    $field['locational_zip'] = $this->input->post('locational_zip');
    $field['locational_country'] = $this->input->post('locational_country');
    $field['tax_exemption_num'] = $this->input->post('tax_exemption_number');
    $field['status'] = 'pending';
    $field['overseer_account_id'] = 'value here';

    $this->db->insert('church_repo', $field);

Where $field is an array with table names as index, and field values as value.

Upvotes: 2

Wizzard
Wizzard

Reputation: 12712

You need to be sanitizing/escaping that content you are inserting. If there is a ' or something else you'll hit an error. Make sure your DB really does contain locational_address. Copy/paste to make sure no typos.

I would consider changing to this, it's much easier to read and follow whats happening. And the data is properly escaped then.

$data = array(
   'church_name' => $this->input->post('church_name'),
   'street_address' => $this->input->post('street_address'),
   .....
   'tax_exemption_number' => $this->input->post('tax_exemption_number')
);

$this->db->insert('church_repo', $data); 

Upvotes: 0

d2burke
d2burke

Reputation: 4111

check your table attribute names, that error means that "locational_address" doesn't exist in your table. may be just a typo

Upvotes: 3

Related Questions