如何在PHP中将变量从一个函数传递给另一个函数?

时间:2012-03-15 11:48:46

标签: php mysql variables

我连接了Mysql& Oracle数据库通过php。 现在在一个函数中说dbInsert(),我将存储数据插入mysql数据库中的一个变量中。现在我关闭与Mysql的连接。 然后我打开Oracle数据库连接;试图获取该变量,以便我可以在Oracle中插入这些值。 但问题是我没有在该变量的Oracle连接中获取那些Mysql值... 如果我使用w / o函数然后文件运行正常但在类函数结构中,它不工作... 我尝试过使用全局变量但是徒劳无功...... 请帮忙......

我只发布那些函数,因为代码太大了...... 我已将$ str声明为全局变量......&在Oracle的oradbInsert()中传递它。

function dbFetch(){
            $a = mysql_insert_id();    
                $result2 = mysql_query("SELECT * FROM sample where order_primary = $a");
        while($row = mysql_fetch_array($result2)){$str = "'".$row["po_number"]."',"."'".$row[created_at]."',"."'".$row["ustomer_firstname"]."',"."'".$row["customer_lastname"]."',"."'".$row["customer_email"]."',"."'".$row["shipping_description"]; 
        echo $str;} 

function dbDisconnect()---- mysql disconnect

功能oradbConnect()

function oradbInsert()
     {

            $qry1= "INSERT INTO Test(po_number , Po_creation_date , customer_firstname , customer_lastname , customer_email , shipping_description) values(".$str");
            $p= oci_parse($conn,$qry1);
            oci_execute($p);
     }

那么我应该如何将$ str从Mysql传递给Oracle,以便来自Mysql的数据将插入到Oracle中...

2 个答案:

答案 0 :(得分:2)

一般而言,当您有两个需要共享数据的函数时,它就是首先存在对象的原因之一。

class ImportantData {
  protected $some_data;
  public function retrieveData() {
    $this->some_data = 'retrieved from db';
  }
  public function useData() {
    // use $this->some_data for something
  }
}

$importantData = new ImportantData();

$importantData->retrieveData();
$importantData->useData();

当然,在您的具体情况下,这可能会或可能不可行,但它是一种流行的解决方案。

答案 1 :(得分:1)

更改fetch函数以返回值。注意:我在$str中创建了一个数组,因为您在循环中获取值。如果您只选择一行,请更改此项。

function dbFetch(){
  $a = mysql_insert_id();    
  $result2 = mysql_query("SELECT * FROM sample where order_primary = $a");
  $str = array();
  while($row = mysql_fetch_array($result2)){
    $str[] = "'".$row["po_number"]."',"."'".$row[created_at]."',"."'".$row["ustomer_firstname"]."',"."'".$row["customer_lastname"]."',"."'".$row["customer_email"]."',"."'".$row["shipping_description"]."'";      
  } 
  return $str;
}

然后将返回值传递给insert函数。再说一遍:我在这里使用了一个数组,如果不需要,代码可以更简单。

function oradbInsert($str){      
  $qry1= "INSERT INTO Test(po_number , Po_creation_date , customer_firstname , customer_lastname , customer_email , shipping_description) values(:val)";
  $p= oci_parse($conn,$qry1);
  oci_bind_by_name($p, ':val', $v);
  foreach ($str as $v) {
    oci_execute($p);
  }
 }

最后说明:未经测试。