2014-01-03 7 views
0

Im new in php и Im практикующий в базе данных и массивах. У меня две таблицы в моей базе данных. Я смог получить данные в одном из своих таблиц и сохранить их в массиве. Теперь я пытаюсь сохранить данные в массиве в другой таблице.Вставить массив в таблицу базы данных

Мой массив multidime:

Array ([0] => Array ([recNAME] => NAME1 [компания] => [address1] => ADDRESS1 [address2] => [город] => CITY1 [провинция] => PROVINCE1 [postalCODE] => 0 [контактNO] => 926XXXXX [email] => [email protected] [товар] => COMMODITY1 [тип] => [вес] => 0 [длина] => 0 [width] => 0 [height] => 0 [decVAL] => 0 [specINSTRUC] => [shipREF] => REF1 [payMETHOD] => CashOnДоставка [packNO] => 200XXXX-XXX [trackNO] => 200XXXX -XXX) [1] => Array ([recNAME] => NAME2 [компания] => [адрес1] => ADDRESS2 [адрес2] => [город] => CITY2 [province] => PROVINCE2 [postalCODE] => 0 [контактNO] => 905XXXXXX [email] => [email protected] [товар] => COMMODITY2 [тип] => [вес] => 0 [длина] => 0 [ширина] => 0 [высота] => 0 [decVAL] => 361 [specINS TRUC] => Я нахожусь в указанном выше адресе от MF, 11 AM-6PM, звоню или отправляю текст для подтверждения [shipREF] => 200XXXXX [payMETHOD] => CashOnDelivery [packNO] => 200XXXX-XXX [trackNO] => 200XXXX-XXX))

какие способы сохранить его на другом столе? Я искал несколько, и большинство из них нужно сериализовать. Я не знаю, как это спасло бы его до стола. Пожалуйста помоги. С уважением.

ответ

1

Вы должны создать динамический массив строк и вставить каждое значение, разделяемое общим в строку.

Будет создана динамическая строка, а затем вы можете вставить эту строку в таблицу.

1

Yo может использовать метод php serialize для создания сохраняемого представления значения. И когда вы получаете данные из базы данных, используйте unserialize

+0

Я видел образцы сериализации метод здесь, но я не видел, что метод serialize указывает, в какую таблицу передать массив. сделает ли он другой стол? – nicole101

+1

Вы должны сериализовать свой массив и вставить его в таблицу по своему усмотрению, но если вы хотите вставить каждый элемент из цикла, вы должны использовать метод ** foreach ** и вставить каждый элемент цикла в свою таблицу –

+0

ow. Хорошо, я попробую. Большое спасибо. :) – nicole101

1

Чтобы достичь этого, вам нужно написать запрос, конечно же, вам нужно зацикливать свой массив.

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

Используйте echo $ query, чтобы проверить результат вашего кода перед его выполнением.

рабочего пример может выглядеть следующим образом:

$query = "INSERT INTO myTable (`name`, `company`, `adress_1`) VALUES ("; 

foreach($myArray as $data) { 
    $query .= "'" . mysql_real_escape_string($data["recNAME"]) . "', "; 
    $query .= "'" . mysql_real_escape_string($data["company"]) . "', "; 
    $query .= "'" . mysql_real_escape_string($data["address1"]) . "'), ("; 
} 

$query = substr($query, 0, strlen($query) - 3); 

echo $query; 

mysql_query($query); 

Лучшее решение написать/найти полезный MySQL класс обработчика, который обеспечивает простые функции, как функция вставки, которая принимает массив.

Но я не уверен, насколько вы знаете о ООП. Лучше всего понять принцип, как это сделать вручную, а затем написать класс самостоятельно, тогда вы полностью его поняли.

Однако, более сложный способ: Это еще не полный пример!

class MySQL 
{ 
    private $handle = null; 
    private function connect() { 
     $this->handle = mysql_connect("127.0.0.1", "user", "pass", "db"); 
    } 

    public function execute($query) { 
     if($this->handle == NULL) { 
      $this->connect(); 
     } 
     if($this->handle != NULL) { 
      mysql_query($query, $this->handle); 
     } 
    } 

    public function insert($table, $fields, $values) { 
     $query = ""; 
     if(is_array($fields) == true && is_array($values) == true) { 
      $query .= "INSERT INTO `$table` ("; 
      foreach($fields as $field) { 
       $query .= "`$field`" . ", "; 
      } 
      $query = substr($query, 0, strlen($query) - 2); 
      $query .= ") VALUES ("; 
      $count = 0; 
      foreach($values as $value) { 
       $query .= "'" . mysql_real_escape_string($value) . "'"; 
       if($count == count($fields)) { 
        $query .= ", "; 
       } else { 
        $query .= "),("; 
       } 
       $count++; 
      } 
      $query = substr($query, 0, strlen($query) - 2); 
     } 

     if(strlen($query) > 0) { 
      $this->execute($query); 
      return true; 
     } 

     return false; 
    } 
} 

Ofcourse этого примера не очень полный, его просто короткий пример можно хранить результаты, NumRows и многое другое в классе, однако здесь есть Usuage:

$sql = new MySQL(); 
$sql->insert("myTable", array("name, "company", "adress_1"), array("guy, "company a", "street 1", "girl", "company b", "street 2")); 
+0

ok Я попробую. большое спасибо!: D – nicole101

Смежные вопросы