CodeIgniter неправильно вставляет данные SQL - PullRequest
0 голосов
/ 24 января 2012
$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')");

Код выше не вставляется правильно, в Ci я получаю следующую ошибку:

Номер ошибки: 1054

Неизвестный столбец 'locational_address' в'список полей'

ВСТАВИТЬ INTO church_repo (имя_центра, адрес улицы, locational_address, locational_zip, locational_country, locational_city, overseer_account_id, tax_exemption_number, status) VALUES ('bgtg', 'ff', 'ff5,' 270 rgf, rgf6, rgf6, rgf6, rg4, rg5f6, rg4, rg4, rg5, rg4, rg5, rg4, rg5, rg5f6, rg4, rg5, rg4, rg5, rg5, rg5, rg5, rg5, 270)'rgrd', 'bdtbdt', 'Соединенные Штаты Америки', '84894894894', 'в ожидании')

Имя файла: C: \ Workspace \ htdocs \ Jan-2012 \ Gospel-links.org \ system \база данных \ DB_driver.php

Номер строки: 330

Ответы [ 4 ]

3 голосов
/ 24 января 2012

проверьте имена атрибутов вашей таблицы, эта ошибка означает, что «locational_address» не существует в вашей таблице. может быть просто опечатка

2 голосов
/ 24 января 2012

Ошибка не требует пояснений: здесь нет поля «locational_address», как уже указывалось в d2byrke, поэтому вам следует начать с проверки этого.

Может быть " street_address ", может быть?

Как дополнение, вы не экранируете значения, которые вы вводите в свою БД; используйте привязки запросов, если вы не хотите использовать 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');

Или даже более чистый (и защищенный) с 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);

Где $field - массив с именами таблиц в качестве индекса и значениями полей в качестве значения.

0 голосов
/ 24 января 2012

Вы должны дезинфицировать / удалять тот контент, который вы вставляете.Если есть 'или что-то еще, вы получите ошибку.Убедитесь, что ваша БД действительно содержит locational_address.Скопируйте / вставьте, чтобы убедиться в отсутствии опечаток.

Я бы посоветовал перейти к этому, гораздо проще читать и следить за происходящим.И тогда данные правильно экранируются.

$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); 
0 голосов
/ 24 января 2012

Попробуйте это только что изменили порядок или вставьте в Mach со столбцом

$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')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...