douqian3712 2015-07-07 17:33
浏览 61

PHP意外的null变量无法回显Mysql结果

I have a form comprising of a table of users. An Admin can select multiple members via check boxes and mark them down. I am trying to echo the username of each successful mark on a success message to the user. However, my variable appears to be 'null'. What am i doing wrong? Below is my code:

if(empty($_POST['cap']) === false){
$week = date("W");
$users = $_POST['user'];
if(empty($users) === false){
    $cap_check = mysqli_query($con, "SELECT week FROM caps WHERE week = '$week'")or die(mysqli_error($con));
    if(mysqli_num_rows($cap_check) == 0){
        mysqli_query($con, "INSERT INTO caps (week, start_date, end_date, upgrades) VALUES('$week','','','')")or die(mysqli_error($con));
    }
    foreach($users as $user){
        $user = mysqli_real_escape_string($con, $user);
        $qry_check = mysqli_query($con, "SELECT capped_users.user, users.username FROM capped_users
        LEFT JOIN users ON capped_users.user = users.user_id
        WHERE user ='$user' AND cap_week = '$week'")or die(mysqli_error($con));
        $username = mysqli_fetch_assoc($qry_check);
        $name = $username['username'];
        if(mysqli_num_rows($qry_check) == 0){
            mysqli_query($con, "INSERT INTO capped_users(week, user) VALUES('$week','$user')")or die(mysqli_error($con));
            $confirm = mysqli_query($con, "SELECT user FROM capped_users WHERE user ='$user' AND week = '$week'")or die(mysqli_error($con));
            if(mysqli_num_rows($confirm) == 1){
                var_dump($name);
                $success_msg[] = '<b>'.$name.'</b>Member has been marked down for the cap this week.';
            }else
                $errors[]= 'Error! '.$name.' could not be marked down for this weeks cap.';
        }else
            $errors[]= '<b>'.$name.'</b> is already marked in the Cap list for this week.';
    }
}else{
    $errors[]= 'No members have been selected';
}
}

Note that:

$errors[]= '<b>'.$name.'</b> is already marked in the Cap list

seems to echo the username correctly. However, in:

$success_msg[] = '<b>'.$name.'</b>Member has been marked down for the cap this week.';

it only echoes "Member has been marked down for the cap this week.

What am I doing wrong?

  • 写回答

1条回答 默认 最新

  • donglu6805 2015-07-07 18:54
    关注

    I fixed the issue by altering the: $confirm = mysqli_query to:

    $confirm = mysqli_query($con, "SELECT capped_users.user, users.username FROM capped_users LEFT JOIN users ON capped_users.user = users.user_id WHERE user ='$user' AND cap_week = '$week'")or die(mysqli_error($con)); $username = mysqli_fetch_assoc($confirm);

    end echoing $username['username'] as opposed to echoing $name. I am unclear as to why the code posted in the question does not work. However, it is apparent that, somehow, mysql data assigned to a variable is lost when you run another query, thus meaning that you have to run the query again to retrieve the same data. I look forward to reading a better explanation.

    评论

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程