2016-05-18 69 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

谢谢你的建议...我会改进我的代码... –

相关问题