黑马程序员技术交流社区

标题: 大神帮忙看看为啥我的代码exit后还在执行? [打印本页]

作者: reebma    时间: 2020-4-22 22:06
标题: 大神帮忙看看为啥我的代码exit后还在执行?
[PHP] 纯文本查看 复制代码
<?php

  require "dbconfig.php";
  $conn = @mysqli_connect(HOST,USER,PASS) or die("提示:数据库连接失败!");
  mysqli_select_db($conn,DBNAME);
  mysqli_set_charset($conn,'utf8');



// 获取输入信息

$ID = $_POST['ID'];
$Password = $_POST['Password'];

// 比对密码
$sql = "SELECT * FROM `editor` WHERE (`password` LIKE '$Password') ";
                // 结果集
$result = mysqli_query($conn,$sql);
            if (!$result) {
                header("Location:passerror.php");
    exit();
               
            }
            
   $newsNum=mysqli_num_rows($result);  
   echo($newsNum);
if ($newsNum == 1 ){
$row = mysqli_fetch_array($result);

$editor =$row['editor'];
};


//empty():检查一个变量是否为空  /  $_FILES数组:接收上传的文件
if (($_FILES["myFile"]["type"]=="image/jpeg" || $_FILES["myFile"]["type"]=="image/png") && $_FILES["myFile"]["size"]<1024000) {
                     // code...
                //把文件上传到./dir目录
  $up_root = './uploads/';
  //该目录是否存在  || 不存在创建该目录
  is_dir($up_root) || mkdir($up_root);
  //遍历上传的文件
  foreach($_FILES as $item){
    //error = 0 表示文件正常可以上传
    if($item['error'] === 0){
      //读取文件信息
      $content = file_get_contents($item['tmp_name'],'r');
      //获取一个带前缀 基于当前时间微妙数唯一的ID
      $fid = $ID;

      //文件名和后缀以'.'分开 得到一个$suffix数组
      $suffix = explode('.',$item['name']);
      //删除数组最后一位并返回 获得后缀名
      $suffix = array_pop($suffix);
      $suffix && ($suffix = '.'.$suffix);
      
      //move_uploaded_file 将上传的文件移动到新位置
      move_uploaded_file($item['tmp_name'],$up_root.$fid.$suffix);
      $name = $up_root.$fid.$suffix;
      mysqli_query($conn,"UPDATE tb1 SET ima='$name' WHERE ID=$ID") or die('修改数据出错:'.mysqli_error($conn));
       mysqli_query($conn,"UPDATE tb1 SET editor='$editor' WHERE ID=$ID") or die('修改数据出错:'.mysqli_error($conn));

      header("Location:done.php");
    }else{
      echo "文件异常,上传失败";
         };
}
}
else{
echo "文件类型不正确,只能上传小于1M的JPEG或PNG图片!";
  
}
mysqli_free_result($result);
mysqli_close($conn);


作者: reebma    时间: 2020-4-22 22:10
第21行,上面的数据库查询后输出结果为0时,到了21行应该退出执行下面的代码,可实际上还在执行,哪位大神知道为什么?
作者: reebma    时间: 2020-4-23 21:44
自己顶一下,不要沉了!
作者: reebma    时间: 2020-4-24 00:42
自己找出原因了!因为想当然的认为第18行的结果集为0,21行即退出;实际上18行的结果集虽然密码不匹配,但是还是有输出,$result的值不为0,所以并不会执行第21行;改正方法由判断$result改为判断$newsNum后,OK!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2