使用PHP PDO类执行MSSQL存储过程

时间:2014-06-18 12:45:39

标签: php sql-server stored-procedures pdo

    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存储过程。

这些评论表明了我尝试过的各种各样的事情,但我似乎无法随心所欲。

我整天都在搜索Google,但看起来很多人并没有将我合并的语言结合起来。

如果您能提供帮助,请告诉我,或者至少指点我一个教程。

由于

好的,

回答你的问题Jonast92,

我在课堂上使用它。

当它返回时,我在另一端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'
)

1 个答案:

答案 0 :(得分:0)

确定,

因此它不起作用的原因是因为PDO无法处理MSSQL DATETIME数据类型。

我通过不绑定参数来解决这个问题,如下所示:

 $sql = "EXEC [DBNAME].[dbo].[SP_NAME] $_cid, $_action_id, $_date";

它不是很安全,但这个特殊的查询并不是必须的。我不会为select语句推荐这种方法。