2014-02-10 4 views
-3

им нуб с использованием CodeIgniter и кодированием PHP, мой вопрос заключается в том, что у меня есть ошибка .. им пытается хранить данные из моей формы, но ошибка не мешает мне ..преобразование массива в строку ошибку

A PHP Error was encountered 

Severity: Notice 

Message: Array to string conversion 

Filename: mysql/mysql_driver.php 

Line Number: 589 

и база данных об ошибке:

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 'Array' at line 1 

INSERT INTO `grade1`() VALUES ('7'), Array 

Filename: C:\wamp\www\thisisit\system\database\DB_driver.php 

Line Number: 330 

вот мое мнение:

<form action="<?php echo site_url('contrl/firstgrading') ?>" method="post"> 
    <strong><input type="hidden" id="sid[]" name="sid[]" value="<?php echo $sid ?>"><?php echo $fname." ".$mname." ".$lname ?></strong><br> 
     <?php     
          $this->load->database();   
          $query = $this->db->query("SELECT subid,subjectname FROM subjects ");   
          foreach ($query->result_array() as $row) 
          { 
         ?> 
          <tr> 
           <td><input type="hidden" id="subid[]" name="subid[]" value="<?php echo $row['subid'] ?>"><?php echo $row['subjectname']?></td>       
           <td align="center"> <input class="form-control" id="GFirst[]" name="GFirst[]" type="text"></td> 
           <td align="center"> <input class="form-control" id="GSecond[]" name="GSecond[]" type="text"></td> 
           <td align="center"> <input class="form-control" id="GThird[]" name="GThird[]" type="text"></td> 
           <td align="center"> <input class="form-control" id="GFourth[]" name="GFourth[]" type="text"></td> 
           <td align="center"> <input class="form-control" id="GFinal[]" name="GFinal[]" type="text"></td>                            
          </tr>      
         <?php 
          } 
         ?> 
</form> 

это мой Controlle г:

$temp = array(); 
      $temp = $this->input->post(NULL, TRUE);   
      for($i = 0 ; $i < count($this->input->post('subid')); $i++){    
       $temp[] = array(
         'gradeid'   => '0', 
         'firstgrading'  => $temp['GFirst'][$i], 
         'secondgrading'  => $temp['GSecond'][$i], 
         'thirdgrading'  => $temp['GThird'][$i], 
         'fourthgrading'  => $temp['GFourth'][$i], 
         'finalgrading'  => $temp['GFinal'][$i], 
         'subidLink'   => $temp['subid'][$i], 
         'studidLink'  => $temp['sid'] 
        ); 
      }; 
      $this->load->model('model'); 
      $this->model->grade($temp);    

это моя модель:

function grade($array = NULL) 
     { 
      if(!isset($array) || !is_array($array)) return FALSE; 
      $confirm = $this->db->insert_batch('grade1',$array); 
      if($confirm) 
      { 
       echo "Success"; 
      } 
      else 
      { 
       echo "Fail"; 
      } 
     } 
+0

пост метод класса из модели ..... – Rooster

+0

Вы не можете передать многомерный массив, если, если вы этого не сделаете insert_batch –

+0

Вы делаете insert_batch? –

ответ

0

Надеется, что вы делаете вставку в вашей модели.

Так изменить код, как показано ниже в вашей модели класса()

$this->db->insert_batch("Table_name",$data); 
3

Для вставки периодического использования Active Record, прежде чем CodeIgniter 2.1.4, следует помнить следующее точечно

Keys for each data array should be same, whatever the values. 

Для пример:

$data = array(
array('A'=>'col-11', 'B'=>'col-12', 'C'=>'col-13', 'D'=>'col-14'), 
array('A'=>'col-21', 'B'=>'col-22', 'C'=>'col-23', 'D'=>'col-24'), 
array('A'=>'col-31', 'B'=>'col-32', 'C'=>'col-33', 'D'=>'col-34') 
); 
$this->db->insert_batch('table',$data); 

Но он не может быть другим, как следует:

$data = array(
array('A'=>'col-11', 'B'=>'col-12', 'C'=>'col-13', 'D'=>'col-14'), 
array('A'=>'col-21', 'B'=>'col-22', 'C'=>'col-23', 'E'=>'col-24'), 
array('A'=>'col-31', 'B'=>'col-32', 'D'=>'col-33', 'F'=>'col-34') 
); 
$this->db->insert_batch('table',$data); 
Смежные вопросы