1

我有一个带有注册表单的小页面。当用户想要注册时,他们只需点击一个按钮,就会生成一个四位数的随机数。

为此,我有了以下想法。我将为用户名呈现一个表单并将“Temp”定义为默认值。如果用户单击“注册”,则会添加“临时”用户。现在我将使用以下 mysql 语句更新 users 表并将用户名更改为随机代码:

 'UPDATE `users` SET `username` = FLOOR( 1000 + ( RAND( ) 
*8999 ) ) WHERE id = ' + $this->Auth->user('id') + ';'

这是整个 php 代码。

   $this->User->query('UPDATE `users` SET `username` = FLOOR( 1000 + ( RAND( )
 *8999 ) ) WHERE id = ' + $this->Auth->user('id') + ';'); 

但这不起作用。你怎么看?创建自动生成的用户名的最佳解决方案是什么?

更新:感谢'kinjal'

    $this->User->query('UPDATE `users` SET `username` = FLOOR( 1000 + ( RAND( ) 
*8999 ) ) WHERE id = '.$this->Auth->user('id').';');
4

2 回答 2

3

首先,您在应该使用句号连接变量和字符串的地方使用加号。

您应该在 Cake 中生成用户名,这样您就可以isUnique在模型中使用验证,如果您想在 MySQL 中执行此操作,则需要对所有以前的用户名进行大型子查询。

您还应该在将用户名插入数据库之前生成用户名,这将阻止您返回并编辑该行,这似乎是一种非常奇怪的做事方式。

于 2012-06-28T10:18:54.143 回答
1

与其创建临时用户然后更改用户名,您可以在表中启用用户名字段上的 AUTO_INCREMENT,而是手动创建第一个用户并将其用户名设置为 1000。

然后,您不必找出用户名,但之后您创建的任何用户都将拥有用户名 1001、1002、1003 .... 等。

这种方法虽然有点非正统。

于 2012-06-28T12:12:44.330 回答