2014-06-06 33 views
0

我正在接近从MSSQL切换到MySQL并且突然遇到路障的过程结束。我有许多存储过程,我通过PDO从表单中传递日期。这在MSSQL中工作正常,但现在导致MySQL版本崩溃。将日期从PDO传递到MySQL存储过程

这是我如何打电话的过程: -

$command = "CALL AddThis (?, ?, ?, ?)"; 

$stpro = $conn->prepare($command); 
$stpro->bindParam(1, $_POST['date'], PDO::PARAM_STR); 
$stpro->bindParam(2, $_POST['type']); 
$stpro->bindParam(3, $bool1, PDO::PARAM_BOOL); 
$stpro->bindParam(4, $bool2, PDO::PARAM_BOOL); 

// call the stored procedure 

$returnvalue = $stpro->execute(); 

该过程将启动如下: -

PROCEDURE `AddThis `(
    IN this_date  date, 
    IN this_type  nvarchar(50), 
    IN bool1   bool, 
    IN bool2   bool) 

如果我完全删除了第一个变量的程序火灾和运行没有问题。只要我添加日期字段,整个事情就会崩溃。

有什么建议吗?

+0

* ...整件事情都落下了。怎么了。如果错误,则发布堆栈跟踪。 –

+0

$ returnvalue = false。例如。该过程不运行。程序中的任何插入都不会运行。 –

+0

不要运行手段?任何异常被抛出?被抓住了吗? –

回答

0

好的,所以它可能不是这样做的最好方式,但我设法得到这个工作(返回我想要的答案)。

我遵守了PHP作为是

$stpro->bindParam(1, $_POST['date'], PDO::PARAM_STR); 

但我已经改变了语句中的SQL来

IN this_date  nvarchar(10), 

,然后加入这一行到过程的主体。

SET  @datetouse = STR_TO_DATE(this_date, '%m,%d,%Y'); 

以m/d/y为格式,我在字符串中用“,”作为分隔符来传递日期。

正如我上面所说,这可能不是这样做的正确方法,但它有效,所以我很高兴。大声笑

相关问题