2015-03-19 3 views
1

У меня есть массив, содержащий 50 значений индекса. часть тха массива, который я получил после того, как print_r($result); являетсяизвлекать данные из массива и сохранять в базе данных

Array 
(
    [0] => Array 
     (
      [ClassScheduleID] => 
      [Location] => Array 
       (
        [Latitude] => 
       ) 
      [ClassDescription] => 
       (
        [ImageURL] => 
        [Level] => 
         (
          [Name] => 
         ) 
        [Program] => 
         (
          [Name] => 
         ) 
       ) 
      [Staff] => Array 
       (
        [FirstName] => 
       ) 
     ) 
    [1] => Array 
     (
      [ClassScheduleID] => 
      [Location] => Array 
       (
        [Latitude] => 
       ) 
      [ClassDescription] => 
       (
        [ImageURL] => 
        [Program] => 
         (
          [Name] => 
         ) 
       ) 
      [Staff] => Array 
       (
        [FirstName] => 
       ) 
     ) 
    [2] => Array 
     (
      [ClassScheduleID] => 
      [Location] => Array 
       (
        [Latitude] => 
       ) 
      [ClassDescription] => 
       (
        [ImageURL] => 
        [Program] => 
         (
          [Name] => 
         ) 
       ) 
      [Staff] => Array 
       (
        [FirstName] => 
       ) 
     ) 
)  

я получает данные из массива с помощью следующего кода (часть кода)

if (!empty($result)) 
    { 
     foreach ($result as $res) 
      { 
       $classscheduleid = $res['ClassScheduleID']; 
       if(isset($res['Location'])) 
        { 
         $l_latitude = $res['Location']['Latitude']; 
        } 

       if(isset($res['ClassDescription'])) 
        { 
         $c_img = $res['ClassDescription']['ImageURL']; 
        } 

       if(isset($res['ClassDescription']['Level'])) 
        { 
         $c_l_name = $res['ClassDescription']['Level']['Name']; 
        } 

       if(isset($res['ClassDescription']['Program'])) 
        { 
         $c_p_name = $res['ClassDescription']['Program']['Name']; 
        } 

       if(isset($res['Staff'])) 
        { 
         $s_firstname = $res['Staff']['FirstName']; 
        } 

       $sql = "INSERT INTO class_detail (classscheduleid,l_latitude,c_img,c_l_name,c_p_name,s_firstname) VALUES ('".$classscheduleid."','".$l_latitude."',,'".$c_img."','".$c_l_name."','".$c_p_name."','".$s_firstname."')"; 
       if (mysqli_query($conn, $sql)) { 
        echo "New record created successfully"; 
       } else { 
        echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
       } 

      } 
    } 

Проблема, с которой я столкнулся является что когда я пытаюсь вставить значение в базу данных, тогда он не вставляет первые 8 значений индекса, он начинает сохранять значения из позиции [9]. Я получаю все данные правильно, так как я проверил по всем переменным. может ли кто-нибудь сказать, как я могу правильно сохранить значение массива в базе данных?

+0

Это потому, что «ClassScheduleID» имеет NULL в первых 8 результатах. Сделать classscheduleid столбцом принять значения null – manoj

+0

@manoj ClassScheduleID не является нулевым, я напечатал результат, и я получаю результат для каждого массива – lyra

+0

, сколько результатов вы получаете –

ответ

1

После $ l_latitude = $ рес [ 'Location'] [ 'Широта']; вставьте его в базу данных с вашим обычным вставным запросом, после этого получите последний вставленный идентификатор после записи запроса обновления после $ c_img = $ res ['ClassDescription'] ['ImageURL']; и поставить чек на последний вставленный id u получил раньше. сделайте это аналогично остальной части. Это немного длинный метод, но, несомненно, даст вам правильные значения и прост в кодировке

0

Вы можете попытаться использовать array_keys() для получения ключей массива и array_values ​​() для значений в массиве и implode() запятой для обоих вставьте его в db.

+0

Я пробовал это, но он не работал – lyra

0

Изменить

foreach ($result as $res) 

Для

foreach ($result as $key=>$res) 
Смежные вопросы