你如何在PHP中的oracle表中插入关联数组

时间:2013-06-25 19:33:35

标签: 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 = new DateTime(null,new DateTimeZone('America / New_York')); $今天= $ NOW->格式( 'Y-M-d');

  2. 我试过了:

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

    看起来很有效。

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

1 个答案:

答案 0 :(得分:1)

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

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

执行插入的实际操作..实际上取决于您使用的数据库的版本,因为以下代码仅适用于11g,10g,9i和8i。

请注意以下内容并非完全真实的代码,您必须根据documentation对其进行调整以适应您的需求。

<?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

?>