使用mysql_fetch_array;用于准备好的语句

问题描述

|
     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陈述式     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...