Как передать переменную из одной функции в другую в PHP? - PullRequest
1 голос
/ 15 марта 2012

Я подключил базы данных MySQL и Oracle через php.Теперь в одной функции, скажем, dbInsert (), я храню данные, вставленные в базу данных mysql, в одну переменную.Сейчас я закрываю связь с Mysql.Затем я открываю соединение для базы данных Oracle и пытаюсь получить эту переменную, чтобы вставить это значение в Oracle.Но проблема, я не получаю эти значения Mysql в соединении Oracle в этой переменной ... Если я использую это без функции, то файл работает нормально, но в структуре функции класса, это не работает ... Я пытался использовать глобальную переменную, нонапрасно ... plz help ...

Я публикую только эти функции, так как код слишком велик ... Я объявил $ 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;} 

функция dbDisconnect () ---- отключение mysql

функция 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 ]

2 голосов
/ 15 марта 2012

В общих чертах, когда у вас есть две функции, которые должны обмениваться данными, это одна из причин, по которой объекты существуют в первую очередь.

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 голос
/ 15 марта 2012

Изменить функцию выборки для возврата значений. Примечание. Я сделал массив $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;
}

Затем передайте возвращаемое значение функции вставки. Снова примечание: я использовал здесь массив, если он не нужен, код может быть проще.

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);
  }
 }

Последнее замечание: это не проверено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...