【问题标题】:PHP database file upload errorPHP数据库文件上传错误
【发布时间】:2012-11-08 21:28:02
【问题描述】:

我正在使用以下代码上传图像文件,当将过程上传到路径时效果很好,但是当文件路径插入到数据库表字段时出现错误

上传者.php

<?php
$db = mysql_connect('localhost', 'root', '') or die('Could not connect:' . mysql_error());
mysql_select_db('fileupload4',$db);
$allowed_filetypes = array('.jpg','.gif','.bmp','.png');
$max_filesize = 10000000;
$upload_path = 'images/'; 
$filename = $_FILES['userfile']['name'];
$extension = substr($filename, strpos($filename,'.'), strlen($filename)-1);
if(!in_array($extension , $allowed_filetypes)) {
    die('The file you attempted to upload is not allowed.');
}
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize) {
    die('The file you attempted to upload is too large.');
}
if(!is_writable($upload_path)) {
   die('You cannot upload to the specified directory, please CHMOD it to 777.');
}
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_path.$filename)) {
    echo 'Your file upload was successful, view the file <a href="'.$upload_path.$filename.'" title="Your File">Here</a>';
} else {
    echo 'There was an error during the file upload.  Please try again.'; // It failed
}
$sql = "UPDATE students SET image = '".$upload_path."' WHERE id = 'student_id'";
mysql_query($sql) OR die(mysql_error());
?>

这是我上传图片时遇到的错误

Unknown column 'id' in 'where clause'

感谢您的帮助...

我的表结构

CREATE TABLE IF NOT EXISTS `students` (
  `student_id` int(11) NOT NULL AUTO_INCREMENT,
  `image` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  PRIMARY KEY (`student_id`),
  KEY `student_id` (`student_id`),
  KEY `image` (`image`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

【问题讨论】:

  • 看到这种情况发生在你刚刚拿起一个代码而不理解它的情况下,它是我的代码:p 正在使用 id,而你没有,所以它向你显示了这个错误
  • 看起来你的 SQL 语法有错误...我想你想要类似 "WHERE student_id = '{valueFromInput}'";"

标签: php mysql sql database file-upload


【解决方案1】:

检查你的MYSQL表结构,显然id列不存在。

也许发布您的 SQL 表?

【讨论】:

  • 如果不存在则创建表 students (student_id int(11) NOT NULL AUTO_INCREMENT, image varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', Primary Key (@ 987654325@), KEY student_id (student_id), KEY image (image) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
【解决方案2】:

正如您在此处发布的查询,您似乎没有使用id 列(正如我之前在评论中已经告诉您的那样),正如@saratis 告诉您的,所以您的查询应该是

UPDATE students SET image = '".$upload_path."' WHERE student_id= 'pass your id here';

【讨论】:

  • 我已经修复了查询错误,但我的图像路径仍然没有存储图像字段...任何想法。?
【解决方案3】:

看起来像那条线

$sql = "UPDATE students SET image = '".$upload_path."' WHERE id = 'student_id'";

需要改成

$sql = "UPDATE students SET image = '".$upload_path."' WHERE student_id = 'student_id'";

因为您没有名为 id 的列,但您有一个名为 student_id 的列

【讨论】:

  • 我试过这个查询...现在没有更多错误了,但我的图像字段仍然没有存储图像路径,为什么?
  • 看起来您存储在数据库中的上传路径只是“images/”,而且您从未创建存储在数据库中的完整路径。
  • 你能解释一下如何创建完整路径吗?因为这是我第一次尝试php文件上传功能....有什么例子吗?
  • 查看您发布的代码,这里似乎正在创建完整路径code echo 'Your file upload was successful, view the file &lt;a href="'.$upload_path.$filename.'" title="Your File"&gt;Here&lt;/a&gt;';
猜你喜欢
  • 2016-11-07
  • 2012-06-18
  • 2010-09-05
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多