我对存储过程和PDO库非常陌生,所以请放轻松。我正在尝试使用PDO函数执行存储过程,并检索记录集以及输出参数。我应该使用哪种功能以及需要哪些参数?
如果我想使用类似下面示例的函数执行基本语句,我应该使用什么PDO方法? e.g。
$mssql = new mssql;
$mssql->sql('stored_procedure()');
$mssql->sql('SELECT * FROM [test]');
我希望函数根据语句类型返回正确的结果。这是可能的吗?
更新
以防万一我没说清楚,'mssql'类使用PDO类来执行查询。目前我正在使用:
$PDO->prepare();
$PDO->exec();
答案 0 :(得分:0)
在研究互联网之后,我发现使用PDO prepare,bindParam和执行方法实际上非常简单。
使用我的类的商店程序示例:
$mssql->bind_params = array(
'BatchNum' => array(
'value' => 'SS000008'
),
'RecCount' => array(
'value' => 0,
'type' => PDO::PARAM_INT,
'length' => 8
)
);
$mssql->sql("{CALL sp_Batch_Sales(@paramOne=:paramOne,@paramTwo=:paramTwo)}");
这转换为:
$query = $PDO->prepare({CALL sp_Batch_Sales(@paramOne=:paramOne,@paramTwo=:paramTwo)});
$query->bindParam(':paramOne',$returned_parameters['paramOne']);
$query->bindParam(':paramTwo',$returned_parameters['paramTwo'],PDO::PARAM_INT,8);
$query->execute();
然后可以使用以下方法检索记录集:
do{
// Get the results
$results = $query->fetchAll(PDO::FETCH_ASSOC);
// Only place the results into the array if they exist
if(!empty($results)){
$data[$i]['results'] = $results;
}
// Set the number of rows in the result array
$data[$i]['rows'] = $query->rowCount();
// Increment i
$i++;
}while($query->nextRowset());
可以使用数组检索输入和输出参数:
$returned_parameters
我希望这会有所帮助