当结果返回仅为1时,如何将从SELECT语句检索的值设置为变量

时间:2014-05-22 16:42:51

标签: php mysql

片段代码

if (!empty($_POST)) {

    $query = "SELECT userid FROM user WHERE email = :email";
    $query_params = array(':email' => $_POST['email']);

    try {
        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {
        $response["success"] = 0;
        $response["message"] = "Database Error Get User ID!";
        die(json_encode($response));
    }

    if ( false !== ($user = $stmt->fetch()))
    {
        $userid = $user['userid'];
    } 
    else {
        $response["success"] = 0;
        $response["message"] = "Why you come here!";
        die(json_encode($response));
    }

我想问的是,之后$row = $stmt->fetchAll();我应该如何编写将userid分配到$ userid的代码而php不会将行结果保存到变量中。

2 个答案:

答案 0 :(得分:0)

$userID = isset($row['userid']);

只需检查是否设置了$ row [' userid'],即它是bool值。

只需检查数组是否为空就足以让您立即获取值:

if(!empty($row))
{
    $userId = $row['userid'];
} 

如果这不是您所要求的,那么您需要让问题变得更加精确。

答案 1 :(得分:0)

fetchAll()返回一个数组。所以$ row ['userid']将不会被设置。 $ row [0] ['userid']会。

Betterh将使用:

if ( false !== ($user = $stmt->fetch()) )
{
  $userid = $user['userid'];
} else
{
  //user not found
}

这段代码的作用是,它试图从语句中获取一行。如果没有找到行->fetch()则返回布尔值false。只要它不返回false,我们就可以在$user var中的语句中找到一行:)