【问题标题】:stmt execute array and fetchstmt 执行数组并获取
【发布时间】:2016-10-31 02:08:01
【问题描述】:

我正在尝试检查从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;

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    试试这个$sth->fetch(PDO::FETCH_ASSOC); 并查看文档:http://php.net/manual/en/pdostatement.fetch.php

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

    那么你可能会尝试从数字数组中访问$row['id']

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

    【讨论】:

    • 我没有使用 PDO 但 mysqli Prepared stmt
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多