2013-07-20 208 views
2

我一直在关注YouTube上的“在MySQL数据库中上传/存储图片”这个教程,但这个问题已经两天了,我一直在试图调试这个问题的最后两天,但无法弄清楚它是什么。问题上传图片

下面的代码:

<?php 
// connect to database 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("databaseimage") or die(mysql_error()); 

// file properties 
$file = $_FILES['image']['tmp_name']; 

if (!isset($file)) 
    echo "Please select an image."; 
else 
{ 
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
$image_name = addslashes($_FILES['image']['name']); 
$image_size = getimagesize($_FILES['image']['tmp_name']); 

if ($image_size==FALSE) 
    echo "That's not an image."; 
else 
{ 
    if (!$insert = mysql_query("INSERT INTO store VALUES ('', '$image_name',  
    '$image')")) 
     echo "Problem uploading image."; 
    else 
    { 
    $lastid = mysql_insert_id(); 
    echo "Image uploaded.<p />Your image:<p /><img src=get.php?id=$lastid>"; 
    } 

} 
} 
?> 

每当我试着上传.png文件或.jpeg文件,代码打“其他”的情况下内的“如果”的情况下,不传递相呼应出“问题上传图片”。 我完全按照教程所做的那样,在教程中的人员能够通过该“if”情况并实际击中最后部分并回应“图片上传”。

任何人都知道问题可能是什么?

回答

1

如果你扔问题上传图像比它可能进入if条件作为查询失败的错误,你应该使用mysql_error()阅读友好的消息,这是什么使您的查询失败。

echo "Problem uploading image.".mysql_error($connection); 
//Replace connection with the connection var 

注:代码是完全脏了,还它使用过时mysql_()。所以 开始学习mysqli_()或PDO,也是你的代码很容易出现SQL注入,更好的消毒数据,并在数据库中插入任何用户提供的数据

而且你不检查文件扩展名和之前逃脱的琴弦文件大小,这是由用户上传,所以你也必须这样做,出于安全原因,并保存上传到您的服务器上的巨大文件...

+0

这表明我的错误是,“错误的整数值:''列'第一行的'id'“。所以我在'$ image_name'之前的空白''中放置了一个任意数字,它使它成功,但我认为我不需要输入数字,因为通过数据库,我将ID设置为PRIMARY,自动递增。我应该在这个空白处填写“来解决这个问题? (我不想让那个任意数字在那里,因为它不觉得正确) – user2512888

+0

@ user2512888如果你的id是AI,那么你使用的插入没有列名,而不是简单地使用这个查询'“INSERT INTO store(image_name_column_name ,another_column_name)VALUES('$ image_name','$ image')“''//将列名替换为真正的名字' –

+0

我明白了,Alien先生,您先生是魔术师,让我成为您的学徒。但是,你是如何学习所有这些知识的呢? (你是否只是阅读所有的文件?)教导我部队的方式。 – user2512888