我连接了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中...
答案 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);
}
}
最后说明:未经测试。