【问题标题】:Execute a MSSQL stored procedure using the PHP PDO class使用 PHP PDO 类执行 MSSQL 存储过程
【发布时间】:2014-08-08 18:34:35
【问题描述】:
    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 存储过程。

cmets 表示我尝试过的各种事情,但我似乎无法使用它。

我整天都在 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'
)

【问题讨论】:

  • 出了什么问题?有实际错误吗?
  • 感谢 Jonast92 的提问。我已经编辑了帖子来回答它。

标签: php sql-server stored-procedures pdo


【解决方案1】:

好的,

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

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

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

它不是很安全,但这个特定的查询不需要。我不建议在 select 语句中使用这种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2014-04-26
    • 2015-07-11
    • 2013-01-31
    • 2018-09-21
    • 2018-08-20
    • 1970-01-01
    相关资源
    最近更新 更多