0

フォームを送信すると、画像ファイルが彼のディレクトリに送信されません。正常に挿入された残りのデータ。私はいくつかのチュートリアルを見ましたが、私は最も安全な方法を使用していないことを知っていますが、それでもうまくいくことを期待しています。誰か見てもらえますか?

 function addData($name, $price, $description, $files)
            {

                            if(!empty($name) || !empty($price) || !empty($description))
                            {
                                   if($sql = $this->db->prepare("SELECT * FROM products WHERE name= ? LIMIT 1"))
                                    {
                                        $sql->bind_param('s', $name);
                                        $sql->execute();
                                        $sql->store_result();
                                        $sql->fetch();
                                        $numrows = $sql->num_rows;
                                        print_r($numrows);
                                    }
                                    else
                                    {
                                        echo "something is wrong";
                                    }
                                    if($numrows>0)
                                    {
                                                echo 'duplicate, go to <a href="index.php?res=resources&adm=admin&page=inventory.php">same page</a>';
                                    }
                                    else
                                    {
                                        if($insert = $this->db->prepare("INSERT INTO products (name, price, description) VALUES(?, ?, ?)"))
                                        {

                                                    $insert->bind_param('sds', $name, $price, $description);
                                                    $insert->execute();
                                        }
                                        else
                                        {
                                            echo "failed to prepare";
                                        }

                                        //The uploaden image is sent to temp map
                                        if(is_uploaded_file($files['image']['tmp_name']))
                                        {
                                            $valid_types = array(
                                                "image/gif",
                                                "image/png",
                                                "image/jpeg",
                                                "image/pjpeg",
                                            );

                                                if (in_array($files["file"]["type"], $valid_types))
                                                {
                                                    $uploaddir = "./webshop/public/img/content/";
                                                    if(move_uploaded_file($files['image']['tmp_name'], $uploaddir."/".$files['image']['name']));
                                                }

                                                //Shows where its stored
                                                    echo "Stored in: " . 'C:/xampp/htdocs/webshop/public/img/content/' . $files["file"]["name"];


                                    }
                                    else
                                    {
                                                    echo "didnt inserted the damn thing!";
                                    }

                                }
                                print_r($files);
                    }
                }
4

1 に答える 1

0

あなた['name']は、move_uploaded_file

move_uploaded_file($files['image']['tmp_name'], $uploaddir."/".$files['image']['name']);

."/".$uploaddir と $files の間に追加されたことにも注意してください

あなたのコード$uploaddir/$files['image']では、目標は末尾のスラッシュとファイルの名前を追加することでしたが、構文を使用して文字列を連結していませんでした。.したがって、変数の間に を追加する必要があります。末尾のスラッシュを追加できます

$uploaddir = "./webshop/public/img/content/";

それで、あなたはできる

move_uploaded_file($files['image']['tmp_name'], $uploaddir.$files['image']['name']);

更新

If..elseif..ファイルを挿入して処理するときに使用します。ロジックによって、ステートメントを準備し、それが失敗した場合はファイルをチェックします。両方を行うことは決してありません。elseif を削除し、2 つの別々のチェックを行う必要があります。

if($insert = ..){}
else{echo "failed to prepare";}
if(is_uploaded_file()){}

最初にアップロードされたファイルを確認し、それを移動してから、他に問題がなければデータベースに挿入することをお勧めします。データベースの挿入が失敗した場合は、何か問題が発生したため、ファイルのリンクを解除 (削除) できます。

于 2013-02-07T19:37:33.483 に答える