Выполнить функцию с переменными из другой БД - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь выполнить функцию со значениями из другой БД.

Я использую Framework Cake PHP 4.x с 2 БД, Postgresql и MariaDB.

В Controller / Programscontroller. php:

use Cake\Datasource\ConnectionManager;

public function pro()
{    $connection = ConnectionManager::get('default');// Postgresql,in this one i have my function test(character varying,bigint,bigint)
     $connection2 = ConnectionManager::get('test');// MariaDB, in this one i want some variables
     $data = $connection2->execute('SELECT stuffs from stuff'); //My $data i want
      foreach ($data as $data) //I declare here 3 variables, to save some $data
    {  $w1=$data['cod_item']; 
       $w2=$data['fecha_solicitud_pago'];
       $w3=$data['monto_total'];
       $connection->execute('SELECT test(w1,w2,w3)');//here is my problem
      }    
}

Я выполняю и получаю сообщение об ошибке SQLSTATE [42703]: Не определен столбец 7, столбец не существует w1. Как правильно определить мои 3 переменные w1 , w2, w3, и использовать их в моей функции из другой БД.

1 Ответ

0 голосов
/ 13 февраля 2020

Я вижу две проблемы:

1. $connection->execute('SELECT test(w1,w2,w3)'); не использует переменные php. Это должно быть:

$connection->execute("SELECT test($w1,$w2,$w3)");

Обратите внимание, что вы должны использовать двойные кавычки, чтобы использовать переменную внутри строки.

2. Вы должны использовать функцию в правильная форма. Если функция получает (текст, дата, число), вы должны отправить ее соответственно:

$connection->execute("SELECT test('$w1','$w2',$w3)");
// or, for more accuracy
$connection->execute("SELECT test('$w1'::text,'$w2'::date,$w3)");

Когда вы делаете $connection->execute(), вы выполняете оператор SQL, поэтому он должен быть хорошо написан. Приведенные выше примеры будут интерпретированы в POSTGRESQL как:

SELECT test('asbd'::text,'2020-02-05'::date,39021)

При условии, что переменные php имеют эти значения.

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