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

问题描述 投票:0回答:3

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


    $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 ['用户名']不会打印?它返回一个:调用未定义的方法mysqli_stmt :: fetch_array()

谢谢。

php mysql mysqli
3个回答
4
投票

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

如果要使用查询中的数据,则需要在调用bind_result后使用fetchexecute


1
投票

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


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
}                                        
© www.soinside.com 2019 - 2024. All rights reserved.