次の行のPHPスクリプトがあります。
require_once 'meekrodb.2.1.class.php';
DB::$user = 'usr';
DB::$password = 'pwd';
DB::$dbName = 'db';
DB::$encoding = 'utf8';
$results = DB::queryFirstField("
CALL getSequence('time_id', %i); // ***** Stored procedure call *****
", TENANT_ID);
DB::insert('timeentry', array(
'tenant_id' => TENANT_ID,
'time_id' => $results,
'timestart' => DB::sqleval("now()"),
'assig_id' => $assig_id
));
次のエラーが発生します。
クエリ:INSERT INTO
timeentry
(tenant_id
、、、 )VALUES(1time_id
、'42'、now()、' 1'timestart
)assig_id
エラー:コマンドが同期していません。現在、このコマンドを実行することはできません
ストアドプロシージャの呼び出しをSELECTステートメントに置き換えると、すべて正常に機能します。
$results = DB::queryFirstField("
SELECT 45; // ***** SELECT statement *****
");
DB::insert('timeentry', array(
'tenant_id' => TENANT_ID,
'time_id' => $results,
'timestart' => DB::sqleval("now()"),
'assig_id' => $assig_id
));
MeekroDBライブラリ(http://www.meekro.com)の内部は分析していません。
各ステートメントをトランザクションでラップしようとしましたが、ストアドプロシージャの呼び出しの直後にCOMMITを実行すると、同じエラーが発生します。
どんな助けでも大歓迎です。