所以......这个问题正在导致我在这个时候失去头发。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>
在确定这个问题的任何帮助,将不胜感激,因为我似乎无法找到它。在我的日志或有问题的页面中不会发生任何错误,并且将其插入到数据库中而没有错误,并且图像上传时没有问题。
...和'$ _ POST [“画廊”]'实际上是设置为'$ category'而不是'$画廊“,这就是为什么这仍然进一步下降。 –
感谢您的快速回复。我觉得这种疏忽很愚蠢。我调整了一些字段名称,并且必须忘记在PHP检查中更新它们。 – Bryan
@Bryan:这个错误对于开发者和我来说也是很常见的,不要觉得自己很愚蠢。实际上,我发现人们使用快速技巧来防止在大多数语言中出现这种情况:总是将常量放在比较语句的左侧: 'if('a'= $ c)'将引发错误而不是静默分配$ c到'a'。 – minhhn2910