2016-05-18 64 views
0

我建立MySQL PDO statment用於插入這樣的:MySQL的PDO試圖列設置爲)UUID的值(返回「無效的參數編號:綁定變量的數量不匹配的令牌數量」

insert into user (id_user, email, password, name, uuid) values (:id_user, :email, :password, :name, uuid()) 

注意最後一個uuid()沒有冒號,因爲我需要Mysql在插入時執行該函數。

這將返回我的例外

SQLSTATE [HY093]:無效的參數編號:綁定變量的數量 不匹配令牌

的數量我怎樣才能通過內部mysql函數"uuid()"使用PDO?

謝謝

+0

uuid()是什麼? –

+0

uuid()函數生成一個通用唯一標識符,它是一個32字符的字符串,如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee –

回答

0

佔位符不是INSERT查詢語法的一部分,正如您可能認爲的那樣。

SQL語法在使用PDO預處理語句時,保持完全一樣。佔位符必須僅用於表示外部數據。

所以,只要你有你的SQL查詢佔位符,你必須精確地變量綁定到你的PDO聲明。

雖然任何內部函數都不需要「傳遞」任何地方或綁定它。它已經存在,並且與任何PDO代碼無關。

+0

大家好,感謝您的快速回復......我得到了這封回覆。 ... 我有一個構建msql語句的類,它正在準備值的數組......(arr [':field'] ='value') 我編寫了函數來檢查數組的值,如果值匹配mysql函數名稱,那麼讓該字段出... 非常感謝你 –

+0

這不是一個好主意,它會在未來崩潰你的代碼。 –

+0

謝謝你的建議...我會改進我的代碼... –

相關問題