php中的用户名、电子邮件或电话号码登录系统

php中的用户名、电子邮件或电话号码登录系统,php,Php,我想建立在PHP登录系统,如果用户输入用户名或电子邮件或电话号码和密码,然后用户登录成功 wp_users表中的字段用户名电子邮件和密码 电话号码是wp_元用户表 如果用户输入电话号码,则匹配meta\u key=phone\u no和meta\u value=674637388273 field value comments table OR email =674637388273

我想建立在PHP登录系统,如果用户输入用户名或电子邮件或电话号码和密码,然后用户登录成功

wp_users表中的字段用户名电子邮件和密码

电话号码是wp_元用户表 如果用户输入电话号码,则匹配
meta\u key=phone\u no
meta\u value=674637388273

     field        value           comments                table
OR   email       =674637388273                            wp_users 
OR   username    =674637388273                            wp_users 
OR   meta_value  =674637388273   if phone no then         wp_metauser 
And  meta_value  = 'phone_no'     //is string             wp_metauser 
AND  Password    =********                                 wp_users 
我有一个查询,但显示错误

 $query = "select * from  wp_users where ( user_login='$email' OR user_email = '$email' OR 'select * from  wp_usermeta where meta_key='phone_no' and meta_value='$email'') and user_pass='$password'";

请参见内部联接的示例


你写的问题是错误的

因为您不能有select in where子句

试着用这个代替

select a.* 
from  wp_users a
join wp_usermeta b
where (a.user_login='$email' OR a.user_email = '$email' OR (b.meta_key='phone_no' and b.meta_value='$email')) and a.user_pass='$password';

你应该告诉我们错误是什么。乍一看,
“$email”
是错误的。您还应该了解表联接。
select a.* 
from  wp_users a
join wp_usermeta b
where (a.user_login='$email' OR a.user_email = '$email' OR (b.meta_key='phone_no' and b.meta_value='$email')) and a.user_pass='$password';