2013-08-15 4 views
0

Я пытаюсь выполнить запрос вставки из CodeIgniter, используя следующий кодВставить запрос не работает в CodeIgniter

$this->db->query($query); 

, но я получаю следующее сообщение об ошибке:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4

INSERT INTO order_bank 
    (creation_date, order_type, so_no, 
    material_no, description, order_qty, no_of_panels, 
    division, job_number, customer_group, sales_office, 
    sales_group, project_name, project_manager, 
    net_value_myr, credit_status, so_delivery_date, 
    order_delivery_date) 
VALUES ('2013-07-01', 'ZTOR', 3058627219, 
    101900000000, 'SUPPLY, MODIFY, INSTALL TEST VCU', 
    1, 0, 'AIS (TSM)', 'SC139203J01', 'Industry', 
    'SEA', 'DOM', 'MELAKA', 
    'Phua Tiang Hai', 42954.55, '', '2013-07-11', 
    '2013-07-05'); 

Filename: C:\wamp\www\system\database\DB_driver.php
Line Number: 330

Но когда я выполняю вышеуказанный запрос в phpmyadmin, его отлично работает. Пожалуйста, помогите мне в сортировке вопроса

+0

одиночными кавычками на '42954.55'. На самом деле, это не нужно. Но вам нужно протестировать его. –

+0

снова проверьте свою переменную $ query или покажите ее здесь. Возможно, это проблема " –

+0

, но почему вы не можете использовать вставку codeigniter с массивом или объектом, подобным этому, $ this-> db-> insert ('order_bank', $ data); –

ответ

3

Используйте активные записи, предоставленные Codeigniter, это было бы намного безопаснее и проще!

http://ellislab.com/codeigniter/user-guide/database/active_record.html

Пример: -

$this->db->set('description', $description); 
$this->db->set('order_qty', $order_qty); 
$this->db->set('no_of_panels', $no_of_panels); 
$this->db->set('division', $division); 
$this->db->set('job_number', $job_number); 
$this->db->set('customer_group', $customer_group); 
$this->db->set('sales_office', $sales_office); 
$this->db->set('sales_group', $sales_group); 
$this->db->set('project_name', $project_name); 
$this->db->set('project_manager', $project_manager); 
$this->db->set('net_value_myr', $net_value_myr); 
$this->db->set('credit_status', $credit_status); 
$this->db->set('so_delivery_date', $so_delivery_date); 
$this->db->set('order_delivery_date', $order_delivery_date); 
$this->db->insert('order_bank'); 

или если ваши данные хранятся в массиве, то вы можете сделать это просто запустив

$this->db->insert('order_bank', $data); 
+0

Просьба представить образец кода. Если связь перестанет работать, ответ будет по-прежнему полезен. – bottleboot

+0

@bottleboot проверить обновленный ответ. –

+0

Блестящий, гораздо более удобный! +1 Я бы никогда не использовал первый способ, хотя вторая вещь, которую вы делаете, чище. – bottleboot

0

42954.55 должен быть '42954.55'. Игнорирование активной записи, потому что это не имеет никакого отношения к вопросу, поэтому этот запрос не работает.

2

вам необходимо загрузить библиотеку базы данных в класс контроллера или файл автозагрузки.

В автозагрузку файл:

$autoload['libraries'] = array('database'); 

или в классе контроллера:

$this->load->library("database"); 
0

Попробуйте что-то подобное

$data = array(
    'user_id' => '$user_id' , 
    'photo_id' => '$photo_id' , 
    'album_id' => '$album_id' 
); 

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