Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用替换词更新表中的行,然后检查是否为阿拉伯语或英语值_Php_Mysql - Fatal编程技术网

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语句。