fetch_array与准备好的语句? PHP MYSQL?

时间:2011-04-15 16:16:11

标签: php mysql mysqli

出于某种原因,我不能让这个为我的生活工作,我是新来的准备好的陈述!


    $q = $dbc -> prepare ("SELECT * FROM accounts WHERE email = ? && logcount = ''");
    $q -> bind_param ('s', ($_SERVER['QUERY_STRING']));
    $row = $q -> fetch_array(MYSQLI_ASSOC);
    $q -> execute();
    $q -> store_result();
        if ($q -> num_rows == 1) {
            $q = $dbc -> prepare("UPDATE accounts SET logcount = '0' WHERE email = ?");
            $q -> bind_param('s', ($_SERVER['QUERY_STRING']));
            $q -> execute();
            echo '

Congratulations ' . $row['username'] . ' your account is now active!

'; }

为什么$ row ['username']无法打印?它返回一个: 调用未定义的方法mysqli_stmt :: fetch_array()

感谢。

3 个答案:

答案 0 :(得分:4)

在这种情况下,您不需要fetch_array

如果您想使用获取查询中的数据,则需要在致电bind_result后使用fetchexecute

答案 1 :(得分:1)

您需要在获取结果之前调用$q -> execute();

答案 2 :(得分:0)

你似乎做错了,当你调用execute时它会返回一个结果对象,这就是你所谓的fetch方法:

$q = $dbc->prepare ("SELECT * FROM accounts WHERE email = ? && logcount = ''");
$q->bind_param ('s', ($_SERVER['QUERY_STRING']));

//Updated Here
$result = $q -> execute();

if ($result->num_rows == 1)
{
    $assocData = $result->fetch_array(MYSQLI_ASSOC);
    //Do other stuff
}