close

有支 PHP 程式在 Windows 主機上跑得好好的,但在 Linux 會出現問題。

程式出錯的地方是用 PHP PDO 連線到 Sybase,資料會無法取回。把 PDOStatement 的 errorInfo() 印出來,看到錯誤訊息是不允許將 VARCHAR 轉型為 NUMERIC。

Array (
[0] => HY000
[1] => 20018
[2] => Implicit conversion from datatype 'VARCHAR' to 'NUMERIC' is not allowed. Use the CONVERT function to run this query.
)

在 bindValue 時設定成 INT 也沒用:

$result->bindValue(':year1', $param_year, PDO::PARAM_INT);

最後的解決方式是在 SQL 裡用 cast 先把值轉型,類似像這樣:

SELECT * FROM DATA WHERE DATA_YEAR=CAST(:year1 AS INT)

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 小攻城師 的頭像
    小攻城師

    小攻城師的戰場筆記

    小攻城師 發表在 痞客邦 留言(0) 人氣()