将日期从PDO传递到MySQL存储过程

时间:2014-06-06 10:59:26

标签: php mysql sql stored-procedures pdo

我正在接近从MSSQL转换到MySQL的过程结束,突然遇到了障碍。我有一些存储过程,我从表单通过PDO传递日期。这在MSSQL中运行良好,但现在导致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)

如果我完全删除第一个变量,则程序触发并运行没有问题。一旦我添加日期字段,整个事情就会崩溃。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好吧,所以这可能不是最好的方法,但我设法让它工作(返回我想要的答案)。

我保持了php的原样

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

但我已将SQL in语句更改为

IN this_date        nvarchar(10),

然后将这一行添加到程序的主体中。

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

m / d / y是我通过","传递字符串中日期的格式。作为分隔符。

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