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!
感谢。
答案 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!';
}
参考文献: