Php 查询基于用户电子邮件的id查找

Php 查询基于用户电子邮件的id查找,php,mysql,Php,Mysql,有人能给我一个MySQL关系查询,根据同一个表的另一个值查找表的列值吗 例如,我有一个包含4列(id、名称、电子邮件、密码)的表。如何根据某个用户的电子邮件在“电子邮件”列中查找“id”列的值,并将结果(id)存储在变量中 下面是session()控制器函数 function userIsLoggedIn() { if (isset($_POST['action']) and $_POST['action'] == 'login') { if (!isset($_

有人能给我一个MySQL关系查询,根据同一个表的另一个值查找表的列值吗

例如,我有一个包含4列(id、名称、电子邮件、密码)的表。如何根据某个用户的电子邮件在“电子邮件”列中查找“id”列的值,并将结果(id)存储在变量中

下面是session()控制器函数

function userIsLoggedIn()
{
    if (isset($_POST['action']) and $_POST['action'] == 'login')
    {
        if (!isset($_POST['email']) or $_POST['email'] == '' or
            !isset($_POST['password']) or $_POST['password'] == '')
        {
            $GLOBALS['loginError'] = 'Please fill in both fields';
            return FALSE;
        }

        $password = md5($_POST['password'] . 'chainfire db');

        if (databaseContainsAuthor($_POST['email'], $password))
        {
            session_start();
            $_SESSION['loggedIn'] = TRUE;
            $_SESSION['email'] = $_POST['email'];
            $_SESSION['password'] = $password;
            $_SESSION['authorid'] = $author;
            return TRUE;
        }
        else
        {
            session_start();
            unset($_SESSION['loggedIn']);
            unset($_SESSION['email']);
            unset($_SESSION['password']);
            unset($_SESSION['authorid']);
            $GLOBALS['loginError'] =
                    'The specified email address or password was incorrect.';
            return FALSE;
        }
    }
我试过了

SELECT id FROM article WHERE email='$email' 
有没有更有效的方法?我也不完全确定如何将查询结果存储在
$author
会话变量中

提前谢谢

您的查询是完美的(附带条件是您正在清理
$email
变量-请参阅的故事)

要执行该查询并将变量
$author
设置为返回值,只需执行以下操作:

$author = 0;
if( ( $idFromEmail = @mysql_query( "SELECT id FROM article WHERE email='".mysql_real_escape_string( $email )."'" ) )
    && mysql_num_rows( $idFromEmail )==1
    && ( $r = mysql_fetch_assoc( $idFromEmail ) ) ){
    $author = $r['id'];
}
如果上述内容过于复杂而无法遵循,则以长格式重写:

$author = 0;
if( !( $idFromEmail = @mysql_query( "SELECT id FROM article WHERE email='".mysql_real_escape_string( $email )."'" ) ){
  // SQL Query Failed
}elseif( mysql_num_rows( $idFromEmail )!=1 ){
  // More than, or less than, one row returned
}else{
  $r = mysql_fetch_assoc( $idFromEmail );
  $author = $r['id'];
}

我建议您将每段代码都写在单独的一行中,以使代码更具可读性,即,
$idFromMail=mysql\u query(…);如果(mysql_num_rows(…)==1){$r=mysql_fetch…;$author=$r['id'];}
同意。通常我会,我只是想在这里尝试一些新的东西。
$author = 0;
if( !( $idFromEmail = @mysql_query( "SELECT id FROM article WHERE email='".mysql_real_escape_string( $email )."'" ) ){
  // SQL Query Failed
}elseif( mysql_num_rows( $idFromEmail )!=1 ){
  // More than, or less than, one row returned
}else{
  $r = mysql_fetch_assoc( $idFromEmail );
  $author = $r['id'];
}