【问题标题】:Compare two PHP arrays after ORACLE database queryORACLE数据库查询后比较两个PHP数组
【发布时间】:2017-09-21 12:54:09
【问题描述】:

亲爱的,

从我的角度来看,我有一个大问题 - 请在下面找到详细信息:

我正在查询两个 ORACLE 数据库并尝试比较结果以根据一列获得它们之间的共同行。它看起来像这样:

首先,我正在搜索相关代码,即Array1:

$query = "select e_code_nr from ERROR_nrs where ERROR_is_rel in ('1','2');

              $stmt = oci_parse($dbconnection_errtype, $query);
              oci_execute($stmt);
              $t=0;
              while (($row = oci_fetch_array($stmt, OCI_NUM)) != false) 
              {
                  $array_errtype[$t] = $row[0];
                  $t++;
              }

结果我收到如下数组:

Array ( 
[0] => C244 
[1] => C245
[2] => C248
[3] => C249
[4] => C250
[5] => C256
[6] => C257
[7] => C259
[8] => C260
[9] => C271
[10] => C281
)

我有一个 Array2 的问题,其中有更多的列。 我设法查询了第二个数据库(仅在 SQL Developer 中):

$query = "select * from pck_dst;

结果我收到了:

SecondQueryResults

我有一个问题:

  1. 我不知道如何查询第二个数据库存储这样的查询结果在PHP数组中;
  2. 我需要帮助比较这两个数组,基于“如果 Array2 中的第 4 列中的行与 Array1 中的某些行匹配,则将 Array2 到 Array3 的整行”;
  3. 在 HTML 表格中显示 Array3。

我知道我的要求很高,但是请 - 我已经为此浪费了一整天的时间。

问候!

【问题讨论】:

  • 数据库是否可以通过链接服务器相互访问? (与具有权限的用户?)如果是这样,您可以执行 1 个查询并立即获取所有需要的数据。
  • Hello ;) 数据存储在两个独立的服务器、数据库、表中。不可能只使用 SQL 来收集此类信息;(

标签: php arrays oracle


【解决方案1】:

方法一:

假设服务器可以相互通信,并且你有必要的权限,你可以创建一个database link

create database link <link name>
connect to <user> identified by <password>
using <connection string>

完成此操作后,您可以直接针对这两个表直接查询您需要的结果集:

$query = "select
            t1.*
          from
            pck_dst@<link name> t1,
            ERROR_nrs t2
          where
            t1.e_code_nr = t2.e_code_nr
            and ERROR_is_rel in ('1','2')";
$stmt = ...

方法二:

如果您不能使用第一种方法,那么您可以使用第一个查询的结果集作为第二个查询的参数:

$db2 = oci_connect($username, $password, $connection_string);
$query = "select * from pck_dst where e_code_nr in ('" . implode("','", $array_errtype) . "')";
$stmt = oci_parse($db2, $query);
...

注意:这假设$array_errtype 包含干净、可信的数据!对于纵深防御,您应该始终使用parameter binding

【讨论】:

  • 方法 2 有帮助 ;) 谢谢伙计!干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 2019-05-23
  • 2011-11-28
  • 2014-04-26
  • 2018-10-20
  • 1970-01-01
相关资源
最近更新 更多