2

YouTube の「MySQL データベース内のイメージのアップロード/保存」のチュートリアルに従っていますが、この問題が 2 日間発生しており、この問題について過去 2 日間デバッグしようとしましたが、わかりませんそれは何ですか。

コードは次のとおりです。

<?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 ファイルをアップロードしようとするたびに、コードは「else」ケース内の「if」ケースにヒットし、それを渡さず、「画像のアップロードの問題」をエコーし​​ます。チュートリアルの人がその「if」ケースを通過し、実際に最後の部分に到達して「画像がアップロードされました」とエコーするチュートリアルとまったく同じようにしました。

問題が何であるか知っている人はいますか?

4

1 に答える 1

1

問題のアップロード画像のエラーがスローされている場合は、おそらくクエリが失敗している状態になっているため、クエリが失敗する原因についてのわかりやすいメッセージを読むif必要があります。mysql_error()

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

注: コードは完全に汚れています。また、 deprecated を使用していますmysql_()。したがって、学習mysqli_()または PDO を開始します。また、コードは SQL インジェクションの傾向があり、ユーザーが提供したデータをデータベースに挿入する前に、データをより適切にサニタイズし、文字列をエスケープします。

また、ユーザーがアップロードしたファイル拡張子とファイルサイズをチェックしていないため、セキュリティ上の理由と、サーバーにアップロードされた巨大なファイルを保存するためにもチェックする必要があります...

于 2013-07-20T07:02:11.883 に答える