fetch_array с подготовленным заявлением? PHP MYSQL? - PullRequest
0 голосов
/ 15 апреля 2011

По какой-то причине я не могу заставить это работать на всю жизнь, я новичок в подготовленных утверждениях!

<code>
    $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 '<p>Congratulations ' . $row['username'] . ' your account is now active!</p>';
        }

Любые идеи, почему $ row ['имя пользователя '] не будет печатать?Он возвращает: вызов неопределенного метода mysqli_stmt :: fetch_array ()

Спасибо.

Ответы [ 3 ]

4 голосов
/ 15 апреля 2011

В этом случае вам не нужно fetch_array.

Если вы хотите использовать для получения данных из запроса, вам нужно использовать bind_result и fetch после звонка execute.

1 голос
/ 15 апреля 2011

Вам нужно позвонить $q -> execute(); до получения результата.

0 голосов
/ 15 апреля 2011

Вы, кажется, делаете это неправильно, когда вы вызываете execute, он возвращает объект результата, который вы вызываете в своих методах выборки:

$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
}                                        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...