private function _SP()
{
$sql = "EXEC [DBNAME].[dbo].[SP_NAME] (?), (?), (?)";
$sql = $this->_dbconn->_dbcon->prepare($sql);
//$sql->execute(array($this->_cid, $this->_action_id, $this->_date));
$sql->bindParam(1, $this->_cid, PDO::PARAM_INT);
$sql->bindParam(2, $this->_action_id, PDO::PARAM_INT);
$sql->bindParam(3, $this->_date, PDO::PARAM_STR);
$sql->execute();
//print_r($sql);
return $sql;
/* foreach($this->_dbconn->_dbcon->query($sql) as $row)
{
echo $row["id"];
}
*/
我正在努力使用PHP PDO类执行MSSQL存储过程。
注释指出了我尝试过的各种事情,但我似乎没有取得任何进展。
我一整天都在谷歌上搜索,但看起来没有多少人能像我一样把语言结合起来。
如果你能帮助我,请告诉我,或者至少给我一个教程。
感谢好的,
回答你的问题,
我在一个类中使用它。
返回后,在另一端执行print_r(),得到如下结果:
reports_adv_ajax_errorlogs Object
(
[_dbconn:reports_adv_ajax_errorlogs:private] => database Object
(
[_dbcon] => PDO Object
(
)
)
[_cid:reports_adv_ajax_errorlogs:private] => 4076158
[_action_id:reports_adv_ajax_errorlogs:private] => null
[_date:reports_adv_ajax_errorlogs:private] => '09-Jun-2014'
)
Ok,
所以它不工作的原因是因为PDO不能处理MSSQL DATETIME数据类型。
我通过不绑定参数来解决这个问题,如下所示: $sql = "EXEC [DBNAME].[dbo].[SP_NAME] $_cid, $_action_id, $_date";
这不是很安全,但这个特殊的查询不需要。对于select语句,我不推荐使用这种方法。