2017-07-24 158 views
0

所以......这个问题正在导致我在这个时候失去头发。MySQL PHP没有插入所有的数据到数据库

我在我的网站上有一个表格,允许用户将图片上传到图库文件夹,并且它工作正常。它上传文件,将其插入到数据库中,然后我可以进入画廊并显示它。

问题是,出于某种原因,逃避我,它不会插入$ _POST ['标题']变量到数据库中。当你点击提交时它甚至不会捕获它。所以现在我有几张图片没有标题列出,即使有一个被输入框中。 (请注意,我有一个检查确保该字段不为空,并且在运行检查时不会出现错误)。

这里是我的PHP和形式的部分代码:

if(isset($_POST['submit'])) 
{ 
    $caption = trim($_POST['caption']); 
    $category = trim($_POST['gallery']); 

    if($caption = '') 
    { 
     $error .= '<p class="error">Please enter a caption for your image.</p>'; 
    } 

    if($gallery = '') 
    { 
     $error .= '<p class="error">Please select a gallery for your image.</p>'; 
    } 

    //Begin upload checks 
    $dir = "../gallery/"; 
    $maxsize = 5000000; // 5MB 
    $valid_exts = array('jpeg','jpg','png','gif'); 
    $ok = 1; 

    if(isset($_FILES['file'])) 
    { 
     $target_file = $dir . basename($_FILES['file']['name']); 
     if($_FILES['file']['size'] < $maxsize) 
     { 
      // get file extension 
      $ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); 
      if(in_array($ext, $valid_exts)) 
      { 
       if(file_exists($target_file)) 
       { 
        $error .= '<p class="error">File already exists.</p>'; 
        $ok = 0; 
       } 
       else 
       { 
        $ok = 1; 
       } 
      } 
      else 
      { 
       $error .= '<p class="error">Image must be a png, gif, or jpg/jpeg file.</p>'; 
       $ok = 0; 
      } 
     } 
     else 
     { 
      $error .= '<p class="error">Image must be no larger than 5MB.</p>'; 
      $ok = 0; 
     } 
    } 
    else 
    { 
     $error .= '<p class="error">No image was selected for upload.</p>'; 
     $ok = 0; 
    } 

    if(empty($error) && $ok == 1) 
    { 
     if(move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) 
     { 
      $date = date('m-d-Y'); 
      $stmt = $db->prepare('INSERT INTO gallery_photos (photo_filename,photo_caption,photo_category,postdate) VALUES (?,?,?,STR_TO_DATE(?, "%m-%d-%Y"))'); 
      if($stmt) 
      { 
       $stmt->bind_param('ssss',$_FILES['file']['name'],$caption,$category,$date); 
       if($stmt->execute()) 
       { 
        $success .= '<p class="success">File successfully uploaded to the gallery.</p>'; 
       } 
       else 
       { 
        $error .= '<p class="error">Error code 89. Please contact the site administrator.</p>'; 
       } 
      } 
      else 
      { 
       $error .= '<p class="error">Error code 86. Please contact the site administrator.</p>'; 
      } 
     } 
     else 
     { 
      $error .= '<p class="error">An error occured while uploading your file.</p>'; 
     } 
    } 
} 

?> 

<div id="form"> 
    <form action="" method="post" enctype="multipart/form-data" name="upload_form"> 
    <table cellspacing="2" cellpadding="2" width="500"> 
     <tr><th colspan="2">Upload Image</th></tr> 

     <tr><td colspan="2"> 
     <?php 
     if($error) 
     { 
      echo $error; 
     } 

     if($success) 
     { 
      echo $success; 
     } 

     if($caption) 
     { 
      echo $caption; 
     } 
     ?> 

     <p>Only PNG files are allowed.</p> 
     </td></tr> 

     <tr> 
      <td align="right"><label for="gallery">Gallery</label></td> 
      <td> 
       <select name="gallery"> 
        <option value="">Select One...</option> 
        <?php 
        $result = $db->query('SELECT * FROM gallery_category'); 
        if(is_object($result) && $result->num_rows > 0) 
        { 
         while($row = $result->fetch_array()) 
         { 
          echo '<option value="'.$row['category_id'].'">'.$row['category_name'].'</option>'; 
         } 
        } 
        ?> 
       </select> 
      </td> 
     </tr> 

     <tr> 
      <td align="right"><label for="file">Image</label></td> 
      <td><input type="file" name="file" /></td> 
     </tr> 

     <tr> 
      <td align="right"><label for="caption">Caption</label></td> 
      <td><input type="text" name="caption" /></td> 
     </tr> 

     <tr><td align="center" colspan="2"><input type="submit" name="submit" value="Upload Image"</td></tr> 
    </table> 
    </form> 
</div> 

在确定这个问题的任何帮助,将不胜感激,因为我似乎无法找到它。在我的日志或有问题的页面中不会发生任何错误,并且将其插入到数据库中而没有错误,并且图像上传时没有问题。

回答

1

问题来自您的支票if($caption = '')if($gallery = '')。因为=是一个赋值操作符,所以不做比较。它会将您的$caption指定为'',预计空白字幕的结果。你应该改变if($caption == '')if($gallery == '')

+1

...和'$ _ POST [“画廊”]'实际上是设置为'$ category'而不是'$画廊“,这就是为什么这仍然进一步下降。 –

+0

感谢您的快速回复。我觉得这种疏忽很愚蠢。我调整了一些字段名称,并且必须忘记在PHP检查中更新它们。 – Bryan

+0

@Bryan:这个错误对于开发者和我来说也是很常见的,不要觉得自己很愚蠢。实际上,我发现人们使用快速技巧来防止在大多数语言中出现这种情况:总是将常量放在比较语句的左侧: 'if('a'= $ c)'将引发错误而不是静默分配$ c到'a'。 – minhhn2910

0

1)您指定因为单= $的标题和$画廊,而不是检查

if($caption = ''){ } 

将$标题设置为“”,也​​不会检查。因此,标题是空

你应该检查这种方式

if($caption == ''){ } 

与==

也许你也应该尝试

if($caption == NULL){ } 

if(empty($caption)){ } 

2) $category = trim($_POST['gallery']);

我不知道你要这样说,也许你应该看看