如何在php中将关联数组插入到oracle表中


how do you insert associative array to an oracle table in php

我有一个名为lines的数组。当我做var_dump($lines)时,我得到的结果是:

array(3) {
  [0]=>
  array(21) {
    [0]=>
    string(1) "3"
    [1]=>
    string(1) "1"
    [2]=>
    string(1) "0"
    [3]=>
    string(8) "49992904"
    [4]=>
    string(6) "283699"
    [5]=>
    string(1) "9"
    [6]=>
    string(3) "610"
    [7]=>
    string(1) "0"
    [8]=>
    string(1) "0"
    [9]=>
    string(1) "0"
    [10]=>
    string(1) "0"
    [11]=>
    string(4) "1142"
    [12]=>
    string(5) "61219"
    [13]=>
    string(5) "21873"
    [14]=>
    string(1) "6"
    [15]=>
    string(1) "2"
    [16]=>
    string(2) "91"
    [17]=>
    string(1) "1"
    [18]=>
    string(4) "1.90"
    [19]=>
    string(4) "11.9"
    [20]=>
    string(8) "15:03:46"
  }
  [1]=>
  array(21) {
    [0]=>
    string(1) "3"
    [1]=>
    string(1) "1"
    [2]=>
    string(1) "0"
    [3]=>
    string(8) "49986779"
    [4]=>
    string(6) "291340"
    [5]=>
    string(2) "11"
    [6]=>
    string(3) "667"
    [7]=>
    string(1) "0"
    [8]=>
    string(1) "0"
    [9]=>
    string(1) "0"
    [10]=>
    string(1) "0"
    [11]=>
    string(4) "1286"
    [12]=>
    string(5) "34464"
    [13]=>
    string(5) "21778"
    [14]=>
    string(1) "4"
    [15]=>
    string(1) "2"
    [16]=>
    string(2) "93"
    [17]=>
    string(1) "1"
    [18]=>
    string(4) "1.28"
    [19]=>
    string(3) "8.0"
    [20]=>
    string(8) "15:04:16"
  }
  [2]=>
  array(21) {
    [0]=>
    string(1) "6"
    [1]=>
    string(1) "1"
    [2]=>
    string(1) "0"
    [3]=>
    string(8) "49986826"
    [4]=>
    string(6) "292415"
    [5]=>
    string(2) "10"
    [6]=>
    string(3) "622"
    [7]=>
    string(1) "0"
    [8]=>
    string(1) "0"
    [9]=>
    string(1) "0"
    [10]=>
    string(1) "0"
    [11]=>
    string(4) "1226"
    [12]=>
    string(5) "31334"
    [13]=>
    string(5) "20273"
    [14]=>
    string(1) "4"
    [15]=>
    string(1) "1"
    [16]=>
    string(2) "94"
    [17]=>
    string(1) "1"
    [18]=>
    string(4) "1.21"
    [19]=>
    string(3) "7.5"
    [20]=>
    string(8) "15:04:46"
  }
}
  1. 我需要将今天的日期附加到每个数组中的第20个元素中的每一个(需要使其成为日期和时间)

    $now=新DateTime(null,新DateTimeZone('America/new_York'));$today=$now->格式('Y-m-d');

我试过这个:

foreach ($lines as $key => $value){
   $lines[$key][20]=$today . ' ' . $lines[$key][20];
   echo $lines[$key][20];
}

看起来效果不错。

2。我需要把这个插入到一个oracle数据库中。我很想知道是否已经有一个方法或函数可以将lines数组中的每个数组插入到表中。

为了序列化数组以插入数据库,可以使用json_encode()serialize();我个人喜欢json_encode(),因为它更容易阅读和修改。

这两个函数都将数组等转换为编码字符串,然后可以将其插入基于文本的数据的列中。

进行插入的实际操作。。这实际上取决于您使用的数据库的版本,因为下面的代码只适用于11g、10g、9i和8i。

请注意,以下内容并不是真正的代码,您必须根据文档对其进行调整以满足您的需求。

<?php
$str = json_encode($lines); //convert to string.  You should have properly escaped the data prior to this/ran it through some function to escape the data.  We don't want injection attacks to occur
$conn = oci_connect('username', 'password', 'localhost'); //connect to database
$stmt = oci_parse($conn, "insert into tablename ('column')
          values('$str')"); // construct statement
oci_execute($stmt, OCI_DEFAULT); // statement executed/data inserted
?>