По какой-то причине я не могу заставить это работать на жизнь меня, я новичок в подготовленных заявлениях!
$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 '
Поздравления ' . $ row ['username']. «ваша учетная запись теперь активна!
«; }
Любые идеи, почему $ row ['username'] не будут печататься? Он возвращает a: вызов неопределенного метода mysqli_stmt :: fetch_array ()
Благодарю.
В этом случае вам не нужен fetch_array
.
Если вы хотите использовать получение данных из запроса, вам нужно использовать bind_result
и fetch
после вызова execute
.
Вам нужно вызвать $q -> execute();
до получения результата.
Кажется, вы неправильно это делаете, когда вы вызываете execute ut, возвращает объект result, который вы называете ваши методы выборки:
$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 }