问题描述
|
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!
谢谢。
解决方法
if ($q -> num_rows == 1) {
$q = $dbc -> prepare(\"UPDATE ...\");
您正在覆盖您的$q
变量,该变量可能保留了SELECT
(猜测)的结果。
UPDATE
部分使用其他变量。
,您正在执行UPDATE
语句。要检索数据,应使用“ 3”语句。 UPDATE
语句仅返回true或false;如果试图获取non result
,mysql函数fetch_array()
也会抛出错误。
由于您的代码以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!\';
}
参考文献:
UPDATE语句
SELECT陈述式