我从 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)
如果我完全删除第一个变量,程序将触发并且运行没有问题。一旦我添加日期字段,整个事情就会崩溃。
有什么建议吗?
最佳答案
好吧,所以这可能不是最好的方法,但我已经设法让它发挥作用(返回我想要的答案)。
我保持 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 为格式,我在字符串中传递日期,并用“,”作为分隔符。
正如我上面所说,这可能不是正确的方法,但它有效,所以我很高兴。哈哈
关于php - 将日期从 PDO 传递到 MySQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24080220/