繁体   English   中英

使用PDO PHP调用Oracle存储过程

[英]Call Oracle stored procedure using PDO PHP

我想使用PDO PHP调用过程(编写为在表中插入数据),但是过程没有被调用。不知道我做错了下面是我的代码,谁能建议我使用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";

?>

http://php.net/manual/en/pdo.prepared-statements.php所示 ,您必须以其他方式使用bindParameter或必须使用bindValue。 (可以在此处通过存储过程在php中使用pdo找到很好的解释)

这应该工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM