2014-06-06 50 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爲格式,我在字符串中用「,」作爲分隔符來傳遞日期。

正如我上面所說,這可能不是這樣做的正確方法,但它有效,所以我很高興。大聲笑

相關問題