2015-11-10 5 views
1

Я новичок в кодеригере. Когда я использую этот запросerror select in select query on codeigniter

$last_insert_id =$this->db->insert_id(); 
    $name = 'Auto loan'; 
    $q = $this->db->select('id')->where('name_of_loan',$name)->limit(1)->get('loan_type'); 

$data_batch = array(
'borrower_id' => $last_insert_id, 
'loan_type_id'=> $q, 

); 
//$this->db->set('loan_type_id', $query); 
$this->db->set('created_on', 'NOW()', FALSE); 
$this->db->set('updated_on', 'NOW()', FALSE); 
$this->db->insert('loan_application',$data_batch); 

Я получаю следующее сообщение об ошибке: У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «)» в строке 1

+0

выполните следующие действия: https://www.quora.com/What-is-the-benefit-of-using-query-on-Codeigniter-format-than-normal-SQL-format –

ответ

0

Попробуйте

$last_insert_id =$this->db->insert_id(); 
$name = 'Auto loan'; 
$query = $this->db->query("SELECT * FROM loan_type WHERE name_of_loan = '$name' "); 
$result = $query->result_array(); 
$q = $result[0]['id']; 

$data_batch = array(
    'borrower_id' => $last_insert_id, 
    'loan_type_id'=> $q,   
); 
+0

Спасибо .... его рабочий штраф :) –

+0

принимайте его, если его работы –

0

если вы используете рамки, то вы должны следовать рамочное выше синтаксис ответил правильно, но `s ответ в основном формате PHP не в формате рамочного, если вы будете использовать основную концепцию, то почему вы используете рамки оставить его и использовать этот запрос для выбора данных -

 $name = 'Auto loan'; 
    $this->db->select('id'); 
    $this->db->from('loan_type'); 
    $this->db->where('name_of_loan',$name); 
    $this->db->limit(1); 
    $query = $this->db->get(); 
    return $query->result_array(); 

Пожалуйста, попробуйте это.

+0

[проверьте это] (http://stackoverflow.com/questions/33623594/error-select-in-select-query-on-codei gniter # comment55021335_33623660), и это также ** CI Определить метод ** –

+0

да, он будет работать нормально, но ci также предоставляет методы по умолчанию для извлечения данных, вставляя данные, а затем почему мы пренебрегаем ими? –

+0

Отсутствует снижение производительности или какой-либо другой вред. Какой способ лучше всего вы можете использовать это –

0

, если я хочу, чтобы вставить данные, как то -

$sql = "INSERT INTO create_shop (shop_name,shop_category,address,location,city,state,postal_code,phone_no,email,min_ammount,description,user_id,image1,image2,image3,image4,date_time) 
       VALUES(" . $this->db->escape($this->input->post('shop_name')) . " 
         ," . $this->db->escape($this->input->post('shop_category')) . " 
         ," . $this->db->escape($this->input->post('address')) . " 
         ," . $this->db->escape($this->input->post('location')) . " 
         ," . $this->db->escape($this->input->post('city')) . " 
         ," . $this->db->escape($this->input->post('state')) . " 
         ," . $this->db->escape($this->input->post('postal_code')) . " 
         ," . $this->db->escape($this->input->post('phone_no')) . " 
         ," . $this->db->escape($this->input->post('email')) . " 
         ," . $this->db->escape($this->input->post('min_ammount')) . " 
         ," . $this->db->escape($this->input->post('description')) . " 
         ,".$this->db->escape($this->session->userdata('username'))." 
         ,".$this->db->escape($f_newfile)." 
         ,".$this->db->escape($f_newfile1)." 
         ,".$this->db->escape($f_newfile2)." 
         ,".$this->db->escape($f_newfile3)." 
         ," . $this->db->escape($now) . ")"; 

то согласно этому будет очень длинный код, а usng методами či мы можем сделать это в одной строке - $this->db->insert('table_name',$data);