Php 使用替换词更新表中的行,然后检查是否为阿拉伯语或英语值
我的桌子像:-Php 使用替换词更新表中的行,然后检查是否为阿拉伯语或英语值,php,mysql,Php,Mysql,我的桌子像:- ID Name Email UserName 1 Johen mak jojo@yahoo.com 2 على يوسف jojo@gmail.com 3 gawil gorgy jojo@homail.com 4 م
ID Name Email UserName
1 Johen mak jojo@yahoo.com
2 على يوسف jojo@gmail.com
3 gawil gorgy jojo@homail.com
4 موسي شفيق gop@yahoo.com
现在我需要从电子邮件中插入用户名值,如果名称是阿拉伯语值,但没有@yahoo.com或@gmail.com
但如果有重复的用户名。它必须是添加1或2
因此,该表必须如下所示:-
ID Name Email UserName
1 Johen mak jojo@yahoo.com Johen_mak
2 على يوسف jojo@gmail.com jojo
3 gawil gorgy jojo@homail.com gawil_gorgy
4 موسى شفيق jojo@yamail.com jojo_1
我该怎么做 用户替换:
update table set username=(select replace(name,' ','_') from table);
这里有一个解决方案,但它不检查重复的用户名
update
yourtable
set username
= case when NOT name REGEXP '[A-Za-z0-9]'
then substring_index(email,'@',1)
else replace(name,' ','_') end ;
现在,另一种解决方案是在用户名的末尾附加id,这样所有用户名都是唯一的
update
yourtable
set username
= case when NOT name REGEXP '[A-Za-z0-9]'
then concat(substring_index(email,'@',1),'_',id)
else concat(replace(name,' ','_'),'_',id) end ;
前两种情况可以使用mysql查询处理,但我怀疑重复的情况会被替换为_1或_2,但如何获得用户名?从电子邮件或有单独的文本字段?我试图使一个触发器它不起作用。但有阿拉伯名称,我需要如果有阿拉伯名称从电子邮件中获得它不是从名称:阅读我的帖子小心,但我不需要所有用户的id:,我需要如果重复的用户名添加id,你能编辑吗?在一个单一的更新语句中,它无法完成,但是,您可以执行第一个查询,然后运行一个php脚本以附加_1或_2seethis Yes这是一个select语句。