PHP for循环更新数据库映像

时间:2014-01-31 18:47:24

标签: php mysql mysqli

我使用for循环验证PHP中的页面,然后使用move_uploaded_file移动上传的文件+还将图像路径添加到数据库。以下是我的代码。

if(empty($_FILES) === false) {
for($i=1; $i<=$items; $i++) {
     $allowed = array('jpg', 'jpeg', 'gif', 'png');

  if (empty($_FILES['photo{$i}']['name']) === true) {
      echo '<div class="alert alert-danger">Please choose a file.</div>';
  } else {
      if (in_array(strtolower(end(explode('.', $_FILES['photo{$i}']['name']))), $allowed) === false) {
      echo '<div class="alert alert-danger">[Photo '.$i.'] Format <strong>NOT</strong> acceptable. ';
      echo 'Accepted formats: '. implode(', ', $allowed).'</div>';
      } elseif($_FILES["photo{$i}"]['size'] > 1048576) {
      echo '<div class="alert-danger">[Photo '.$i.'] Image is too big. Maximium file size is 1MB.</div>';
      } else {
        mysqli_query($con, "UPDATE temp SET photo{$i} = '".rand(0,999).".".in_array(strtolower(end(explode('.', $_FILES['photo{$i}']['name']))))."' WHERE session = $session");
        move_uploaded_file($_FILES["photo{$i}"]['tmp_name'], 'img/temp/'.rand(0,999) . '.' . in_array(strtolower(end(explode('.', $_FILES['photo{$i}']['name'])))));
      }
  }
  }
}

图像不会移动到所需的上载位置,也不会更新数据库中的文件路径。请有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

'photo{$i}'的任何地方都不正确。正如elitechief21在上面的评论中解释的那样,PHP不会用单引号解析变量。所以它实际上在photo{$i}中寻找关键$_FILES,将{$i}视为文字文本。当然,这不存在,因此脚本无法按预期工作。

photo{$i}当前位于单引号内时,您需要使用双引号。