stmt执行数组和获取

时间:2016-10-30 17:17:09

标签: php mysql

我正在尝试检查从cookie中检索到的id是否存在于数据库中,但是这部分代码

$stmt->bind_result($id, $uname); 

$username = $uname;

根据这个说未定义变量我应该没有问题

http://php.net/manual/en/mysqli-stmt.bind-result.php

在zend中给我一个警告错误。在条件下分配。如果 stmt-> bind_result 对于mysqli来说也是正确的,我就不会说了。

   /**
     * Decode cookies and extract user ID
     */
    $decryptCookieData = base64_decode($_COOKIE['rememberUserCookie']);
    $user_id = explode("UaQteh5i4y3dntstemYODEC", $decryptCookieData);
    $userID = $user_id[1];

    /**
     * check if id retrieved from the cookie exist in the database
     * */
    $db = dbconnect();
    $stmt = $db->prepare('SELECT id, username FROM users WHERE id = ?');
    $id = $userID;
    $stmt->bind_param('i', $id);
    $id = $userID;
    $stmt->execute();

    $stmt->store_result();
    $stmt->bind_result($id, $uname);

    if ($stmt->fetch()) { 
        $uid = $id;
        $username = $uname;
        /**
         * Create the user session variable
         */
        $_SESSION['id'] = $uid;
        $_SESSION['username'] = $uname;
        $isValid = true;

1 个答案:

答案 0 :(得分:0)

试试这个$sth->fetch(PDO::FETCH_ASSOC);并查看文档:{​​{3}}

  

控制下一行将如何返回给调用者。该值必须是PDO :: FETCH_ *常量之一,默认值为PDO :: ATTR_DEFAULT_FETCH_MODE(默认为PDO :: FETCH_BOTH)。

您可能尝试从数字数组中访问$row['id']

  

PDO :: FETCH_BOTH:将下一行作为由列名和编号索引的数组返回   排列   (       [name] =>香蕉       [0] =>香蕉       [color] =>黄色       [1] =>黄色   )