2012-06-28 20 views
1

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

为此,我得到了以下想法。我将为用户名呈现一个表单,并将“Temp”定义为默认值。如果用户点击“注册”一个“温度” - 用户将被添加。现在我将更新用户表并使用以下mysql语句将用户名更改为随机代码:

'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').';'); 
+1

多语言问题。在PHP中进行串联尝试。而不是+ –

+0

谢谢你的提示=)但它没有解决问题。 – Chronnie

+1

你不希望超过8999用户...? – deceze

回答

3

首先,你使用,你应该用句号来连接变量和字符串加号。

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

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

1

而不是创建一个临时用户,然后改变你的表的用户名,你可以使在用户名字段AUTO_INCREMENT的,手动创建的第一个用户,并将其设置的用户名到1000

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

虽然这种方法有点不正常。