2017-03-18 14 views
0

PDO PHP を使用してプロシージャ(テーブルにデータを挿入するように記述)を呼び出したいがプロシージャが呼び出されていない。何がわかっていないかわからない 以下は、誰も私にPDO PHPを使用してOracleプロシージャを呼び出すための最良の方法を提案することができます。PDOを使用してOracleストアドプロシージャを呼び出すPHP

<?php 
    require("connection.php"); 
    date_default_timezone_set('Asia/Kolkata'); 

    $PARTY_C = 36317; 
    $CONN_NO = 479; 
    $EST_C = 86; 
    $STATUS = 'F'; 
    $FAULTY_STATUS = 'PM'; 
    $BILL_DT = date('d/m/Y'); 
    $CURR_READ = 1000; 
    $PENALTY = 35; 
    $ADJSTMNT = 245; 
    $MTR_CHNG_DT = date('d/m/Y'); 
    $OLD_MTR_READ = 900; 
    $METER_RES_DT = date('d/m/Y'); 
    $PREV_OS_A_M = 1; 
    $PREV_INT_A_M = 34; 
    $PREV_PI_A_M = 45745; 
    $PARTY_M = 'abc'; 

$stmt = $conn->prepare("CALL PH_STATUS(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 
$stmt->bindParam(1, $PARTY_C, PDO::PARAM_INT); 
$stmt->bindParam(2, $CONN_NO, PDO::PARAM_INT); 
$stmt->bindParam(3, $EST_C, PDO::PARAM_INT); 
$stmt->bindParam(4, $STATUS, PDO::PARAM_STR); 
$stmt->bindParam(5, $FALTY_STATUS, PDO::PARAM_STR); 
$stmt->bindParam(6, $BILL_DT, PDO::PARAM_STR); 
$stmt->bindParam(7, $CURR_READ, PDO::PARAM_INT); 
$stmt->bindParam(8, $PENALTY, PDO::PARAM_INT); 
$stmt->bindParam(9, $ADJSTMNT, PDO::PARAM_INT); 
$stmt->bindParam(10, $MTR_CHNG_DT, PDO::PARAM_STR); 
$stmt->bindParam(11, $OLD_MTR_READ, PDO::PARAM_INT); 
$stmt->bindParam(12, $METER_RES_DT, PDO::PARAM_STR); 
$stmt->bindParam(13, $PREV_OS_A_M, PDO::PARAM_INT); 
$stmt->bindParam(14, $PREV_INT_A_M, PDO::PARAM_INT); 
$stmt->bindParam(15, $PREV_PI_A_M, PDO::PARAM_INT); 
$stmt->bindParam(16, $PARTY_M, PDO::PARAM_STR); 

$stmt->execute(); 

print "procedure returned $stmt\n"; 

?> 

答えて

0

ここhttp://php.net/manual/en/pdo.prepared-statements.phpを発見したとして、あなたは別の方法でbindParameterを使用する必要があります。または、bindValueを使用する必要があります。 (良い説明はここUsing pdo in php with stored procedure見つけることができます)

これは動作するはずです:

... 
$stmt->bindValue(1, $PARTY_C, PDO::PARAM_INT); 
$stmt->bindValue(2, $CONN_NO, PDO::PARAM_INT); 
$stmt->bindValue(3, $EST_C, PDO::PARAM_INT); 
... 
+0

また、私はこれを試みたが、私のために働いていません。 – amar

+0

あなたもその文書を読むべきです。これは、PDOでストアドプロシージャを使用する唯一の方法です。そうでない場合は、プロシージャに別の名前が付いているか、動作しません。 – Oliver

関連する問題