使用mysql_fetch_array();准备好的陈述

时间:2011-04-15 12:16:26

标签: php mysql

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

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

'; }

为什么使用$ q ['username']它不会获取行用户名?

我是新手使用准备好的陈述,请原谅我:D!

感谢。

2 个答案:

答案 0 :(得分:1)

 if ($q -> num_rows == 1) {
        $q = $dbc -> prepare("UPDATE ...");

您正在覆盖$q变量,该变量可能包含SELECT(猜测)的结果。

UPDATE部分使用不同的变量。

答案 1 :(得分:0)

您正在执行UPDATE声明。要检索数据,您应该使用SELECT语句。 UPDATE语句仅返回true或false;如果您尝试获取fetch_array(),mysql函数non result也应该输错。

由于您的代码以if ($q -> num_rows == 1) {开头,我认为$q -> fetch_array(MYSQLI_ASSOC);指的是以前的查询。要分离并且不覆盖这两个查询,您应该执行此代码:

if ($q -> num_rows == 1) {
    $q2 = $dbc -> prepare("UPDATE accounts SET logcount = '0' WHERE email = ?");
    $q2 -> bind_param('s', ($_SERVER['QUERY_STRING']));
        $q -> fetch_array(MYSQLI_ASSOC);
    $q2 -> execute();
    echo 'Congratulations ' . $q['username'] . ' your account is now active!';
}

参考文献: