无法在PHP中触发SQL请求

时间:2015-12-02 14:46:54

标签: php mysql prepared-statement

我有一个用户可以用来更新对象的表单。该对象有5个img属性。所以在修改时我想更新数据库。我希望该函数只更新用户在表单中更改的图像(数据库中的属性(img,img2,img3,img4,img5)。

以下是表单提交的更新功能:

public function updateOutil()
    {

        $o = new Outillage($_POST["art"]);
        $o->__set("id", $_POST["id"]);
        $o->__set("id_art", $_POST["id_art"]);
        $o->__set("article", $_POST["art"]);
        $o->__set("id_doc", $_POST["id_doc"]);
        $o->__set("document", $_POST["doc"]);
        $o->__set("ilot", ilot::findAllByName($_POST["ilot"]));
        $o->__set("emplacement", $_POST["emplacement"]);
        $o->__set("liste_tubes", $_POST["liste_tubes"]);

        define('TARGET', $_SERVER['DOCUMENT_ROOT'].'imageOutil/'); // Repertoire cible
        define('MAX_SIZE', 5300000); // Taille max en octets du fichier
        define('WIDTH_MAX', 5000); // Largeur max de l'image en pixels
        define('HEIGHT_MAX', 5000); // Hauteur max de l'image en pixels
// Tableaux de donnees
        $tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees
        $infosImg = array();
// Variables
        $extension = '';
        $nomImage = '';
        $message='';
        $cpt='';
        /************************************************************
         * Creation du repertoire cible si inexistant
         *************************************************************/
        if( !is_dir(TARGET) ) {
            if( !mkdir(TARGET, 0755) ) {
                exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
            }
        }
        /************************************************************
         * Script d'upload
         *************************************************************/
        if(!empty($_POST['image']))
        {
// On verifie si le champ est rempli
            if( !empty($_FILES['fichier']['name']) )
            {
// Recuperation de l'extension du fichier
                $extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
                if(in_array(strtolower($extension),$tabExt))
                {
// On recupere les dimensions du fichier
                    $infosImg = getimagesize($_FILES['fichier']['tmp_name']);
// On verifie le type de l'image
                    if($infosImg[2] >= 1 && $infosImg[2] <= 14)
                    {
// On verifie les dimensions et taille de l'image
                        if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE))
                        {
// Parcours du tableau d'erreurs
                            if(isset($_FILES['fichier']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier']['error']){
// On nomme le fichier
                                $nomImage=$_POST['image'];
//On verifie qu'aucun fichier du même nom existe
                                if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
                                    try{
                                        move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET . $nomImage);
                                        $o->__set("image", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
                                        $message1= '<br/>L\'opération a été effectuée avec succès!';
                                    } catch (Exception $e) {
// Sinon on affiche une erreur systeme
                                        $o->__set("image", 'imageOutil/'. $nomImage . time());
                                        $message1= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
                                        $message1.= $e->getMessage();
                                    }
                                }
                                else{
                                    $newNomImage=  date('His',time()). $nomImage;
                                    move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET . $newNomImage);
                                    $o->__set("image", 'imageOutil/' .  $newNomImage);
                                    $message1= '<br/>Un fichier image du même nom que image 1 est déjà existant.';
                                    $message1.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
                                }
                            }
                            else
                            {
                                $message1= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
                                $message1.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                            }
                        }
                        else
                        {
// Sinon erreur sur les dimensions et taille de l'image
                            $message1= '<br/>Erreur dans les dimensions de l\'image !';
                            $message1.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                        }
                    }
                    else
                    {
// Sinon erreur sur le type de l'image
                        $message1= '<br/>Le fichier à uploader n\'est pas une image !';
                        $message1.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                    }
                }
                else
                {
// Sinon on affiche une erreur pour l'extension
                    $message1= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';

                }
            }
            else
            {
// Sinon on affiche une erreur pour le champ vide
                $message1= '<br/>Pas de Fichier ajouté pour l\'image 1 !';
                $cpt.='A';
            }

        }
        else{
            $message1= '<br/>Vous n\'avez pas nommez l\'image 1 !';
        }
        $message=$message1;
        if(!empty($_POST['image2']))
        {
// On verifie si le champ est rempli
            if( !empty($_FILES['fichier2']['name']) )
            {
// Recuperation de l'extension du fichier
                $extension = pathinfo($_FILES['fichier2']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
                if(in_array(strtolower($extension),$tabExt))
                {
// On recupere les dimensions du fichier
                    $infosImg = getimagesize($_FILES['fichier2']['tmp_name']);
// On verifie le type de l'image
                    if($infosImg[2] >= 1 && $infosImg[2] <= 14)
                    {
// On verifie les dimensions et taille de l'image
                        if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier2']['tmp_name']) <= MAX_SIZE))
                        {
// Parcours du tableau d'erreurs
                            if(isset($_FILES['fichier2']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier2']['error']){
// On nomme le fichier
                                $nomImage=$_POST['image2'];
//On verifie qu'aucun fichier du même nom existe
                                if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
                                    try{
                                        move_uploaded_file($_FILES['fichier2']['tmp_name'], TARGET . $nomImage);
                                        $o->__set("image2", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
                                        $message2= '<br/>L\'opération a été effectuée avec succès!';
                                    } catch (Exception $e) {
// Sinon on affiche une erreur systeme
                                        $o->__set("image2", 'imageOutil/'. $nomImage . time());
                                        $message2= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
                                        $message2.= $e->getMessage();
                                    }
                                }
                                else{
                                    $newNomImage=  date('His',time()). $nomImage;
                                    move_uploaded_file($_FILES['fichier2']['tmp_name'], TARGET . $newNomImage);
                                    $o->__set("image2", 'imageOutil/' .  $newNomImage);
                                    $message2= '<br/>Un fichier image du même nom que image 2 est déjà existant.';
                                    $message2.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
                                }
                            }
                            else
                            {
                                $message2= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
                                $message2.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                            }
                        }
                        else
                        {
// Sinon erreur sur les dimensions et taille de l'image
                            $message2= '<br/>Erreur dans les dimensions de l\'image !';
                            $message2.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                        }
                    }
                    else
                    {
// Sinon erreur sur le type de l'image
                        $message2= '<br/>Le fichier à uploader n\'est pas une image !';
                        $message2.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                    }
                }
                else
                {
// Sinon on affiche une erreur pour l'extension
                    $message2= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';

                }
            }
            else
            {
// Sinon on affiche une erreur pour le champ vide
                $message2= '<br/>Pas de Fichier ajouté pour l\'image 2 !';
                $cpt.='B';
            }

        }
        else{
            $message2= '<br/>Vous n\'avez pas nommez l\'image 2 !';
        }
        $message.=$message2;
        if(!empty($_POST['image3']))
        {
// On verifie si le champ est rempli
            if( !empty($_FILES['fichier3']['name']) )
            {
// Recuperation de l'extension du fichier
                $extension = pathinfo($_FILES['fichier3']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
                if(in_array(strtolower($extension),$tabExt))
                {
// On recupere les dimensions du fichier
                    $infosImg = getimagesize($_FILES['fichier3']['tmp_name']);
// On verifie le type de l'image
                    if($infosImg[2] >= 1 && $infosImg[2] <= 14)
                    {
// On verifie les dimensions et taille de l'image
                        if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier3']['tmp_name']) <= MAX_SIZE))
                        {
// Parcours du tableau d'erreurs
                            if(isset($_FILES['fichier3']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier3']['error']){
// On nomme le fichier
                                $nomImage=$_POST['image3'];
//On verifie qu'aucun fichier du même nom existe
                                if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
                                    try{
                                        move_uploaded_file($_FILES['fichier3']['tmp_name'], TARGET . $nomImage);
                                        $o->__set("image3", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
                                        $message3= '<br/>L\'opération a été effectuée avec succès!';
                                    } catch (Exception $e) {
// Sinon on affiche une erreur systeme
                                        $o->__set("image3", 'imageOutil/'. $nomImage . time());
                                        $message3= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
                                        $message3.= $e->getMessage();
                                    }
                                }
                                else{
                                    $newNomImage=  date('His',time()). $nomImage;
                                    move_uploaded_file($_FILES['fichier3']['tmp_name'], TARGET . $newNomImage);
                                    $o->__set("image3", 'imageOutil/' .  $newNomImage);
                                    $message3= '<br/>Un fichier image du même nom que image 3 est déjà existant.';
                                    $message3.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
                                }
                            }
                            else
                            {
                                $message3= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
                                $message3.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                            }
                        }
                        else
                        {
// Sinon erreur sur les dimensions et taille de l'image
                            $message3= '<br/>Erreur dans les dimensions de l\'image !';
                            $message3.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                        }
                    }
                    else
                    {
// Sinon erreur sur le type de l'image
                        $message3= '<br/>Le fichier à uploader n\'est pas une image !';
                        $message3.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                    }
                }
                else
                {
// Sinon on affiche une erreur pour l'extension
                    $message3= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';

                }
            }
            else
            {
// Sinon on affiche une erreur pour le champ vide
                $message3= '<br/>Pas de Fichier ajouté pour l\'image 3 !';
                $cpt.='C';
            }

        }
        else{
            $message3= '<br/>Vous n\'avez pas nommez l\'image 3 !';
        }
        $message.=$message3;
        if(!empty($_POST['image4']))
        {
// On verifie si le champ est rempli
            if( !empty($_FILES['fichier4']['name']) )
            {
// Recuperation de l'extension du fichier
                $extension = pathinfo($_FILES['fichier4']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
                if(in_array(strtolower($extension),$tabExt))
                {
// On recupere les dimensions du fichier
                    $infosImg = getimagesize($_FILES['fichier4']['tmp_name']);
// On verifie le type de l'image
                    if($infosImg[2] >= 1 && $infosImg[2] <= 14)
                    {
// On verifie les dimensions et taille de l'image
                        if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier4']['tmp_name']) <= MAX_SIZE))
                        {
// Parcours du tableau d'erreurs
                            if(isset($_FILES['fichier4']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier4']['error']){
// On nomme le fichier
                                $nomImage=$_POST['image4'];
//On verifie qu'aucun fichier du même nom existe
                                if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
                                    try{
                                        move_uploaded_file($_FILES['fichier4']['tmp_name'], TARGET . $nomImage);
                                        $o->__set("image4", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
                                        $message4= '<br/>L\'opération a été effectuée avec succès!';
                                    } catch (Exception $e) {
// Sinon on affiche une erreur systeme
                                        $o->__set("image4", 'imageOutil/'. $nomImage . time());
                                        $message4= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
                                        $message4.= $e->getMessage();
                                    }
                                }
                                else{
                                    $newNomImage=  date('His',time()). $nomImage;
                                    move_uploaded_file($_FILES['fichier4']['tmp_name'], TARGET . $newNomImage);
                                    $o->__set("image4", 'imageOutil/' .  $newNomImage);
                                    $message4= '<br/>Un fichier image du même nom que image 4 est déjà existant.';
                                    $message4.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
                                }
                            }
                            else
                            {
                                $message4= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
                                $message4.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                            }
                        }
                        else
                        {
// Sinon erreur sur les dimensions et taille de l'image
                            $message4= '<br/>Erreur dans les dimensions de l\'image !';
                            $message4.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                        }
                    }
                    else
                    {
// Sinon erreur sur le type de l'image
                        $message4= '<br/>Le fichier à uploader n\'est pas une image !';
                        $message4.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                    }
                }
                else
                {
// Sinon on affiche une erreur pour l'extension
                    $message4= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';

                }
            }
            else
            {
// Sinon on affiche une erreur pour le champ vide
                $message4= '<br/>Pas de Fichier ajouté pour l\'image 4 !';
                $cpt.='D';
            }

        }
        else{
            $message4= '<br/>Rien pour l\'image 4 !';
        }
        $message.=$message4;
        if(!empty($_POST['image5']))
        {
// On verifie si le champ est rempli
            if( !empty($_FILES['fichier5']['name']) )
            {
// Recuperation de l'extension du fichier
                $extension = pathinfo($_FILES['fichier5']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
                if(in_array(strtolower($extension),$tabExt))
                {
// On recupere les dimensions du fichier
                    $infosImg = getimagesize($_FILES['fichier5']['tmp_name']);
// On verifie le type de l'image
                    if($infosImg[2] >= 1 && $infosImg[2] <= 14)
                    {
// On verifie les dimensions et taille de l'image
                        if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier5']['tmp_name']) <= MAX_SIZE))
                        {
// Parcours du tableau d'erreurs
                            if(isset($_FILES['fichier5']['error'])&& UPLOAD_ERR_OK === $_FILES['fichier5']['error']){
// On nomme le fichier
                                $nomImage=$_POST['image5'];
//On verifie qu'aucun fichier du même nom existe
                                if(!file_exists (TARGET.$nomImage)) {
// Si c'est OK, on teste l'upload
                                    try{
                                        move_uploaded_file($_FILES['fichier5']['tmp_name'], TARGET . $nomImage);
                                        $o->__set("image5", 'imageOutil/'. $nomImage); //TARGET . $nomImage => D:/Documents and Settings/raphael.delric/Mes documents/Mes Outils Personnels/*/UwAmp/www//imageOutil/*
                                        $message5= '<br/>L\'opération a été effectuée avec succès!';
                                    } catch (Exception $e) {
// Sinon on affiche une erreur systeme
                                        $o->__set("image5", 'imageOutil/'. $nomImage . time());
                                        $message5= '<br/>Problème lors de l\'enregistrement de l\'image 1 !';
                                        $message5.= $e->getMessage();
                                    }
                                }
                                else{
                                    $newNomImage=  date('His',time()). $nomImage;
                                    move_uploaded_file($_FILES['fichier5']['tmp_name'], TARGET . $newNomImage);
                                    $o->__set("image5", 'imageOutil/' .  $newNomImage);
                                    $message5= '<br/>Un fichier image du même nom que image 5 est déjà existant.';
                                    $message5.= '<br/>L\image a donc été enregistrée comme suis [heures:minutes:secondes][votre nom de fichier].[votre extension]. '.$newNomImage;
                                }
                            }
                            else
                            {
                                $message5= '<br/>Une erreur interne a empêché l\'enregistrement de l\'image';
                                $message5.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                            }
                        }
                        else
                        {
// Sinon erreur sur les dimensions et taille de l'image
                            $message5= '<br/>Erreur dans les dimensions de l\'image !';
                            $message5.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                        }
                    }
                    else
                    {
// Sinon erreur sur le type de l'image
                        $message5= '<br/>Le fichier à uploader n\'est pas une image !';
                        $message5.= '<br/>L\'enregistrement de l\'image n\'a donc pas été pris en compte.';
                    }
                }
                else
                {
// Sinon on affiche une erreur pour l'extension
                    $message5= '<br/>L\'extension du fichier est incorrecte ! Extension attendue : .jpg, .gif, .png, .jpeg';

                }
            }
            else
            {
// Sinon on affiche une erreur pour le champ vide
                $message5= '<br/>Pas de Fichier ajouté pour l\'image 5 !';
                $cpt.='E';
            }

        }
        else{
            $message5= '<br/>Rien pour l\'image 5 !';
        }
        $message.=$message5;
        $o->updateImg($cpt);
        header('Location: /Site.php?a=outillage&b='.urlencode($message));
    }

这是updateImg函数,它应该执行sql请求,如下所示:

public function updateImg($cpt){
        $c=Base::getConnection();
        $posA=strpos($cpt,'A');
        $posB=strpos($cpt,'B');
        $posD=strpos($cpt,'C');
        $posE=strpos($cpt,'D');
        $posF=strpos($cpt,'E');
        $q='UPDATE outillage SET id_art=:id_art, article=:article, id_doc=:id_doc, document=:document, ilot=:ilot, emplacement=:emplacement, liste_tubes=:liste_tubes';

        if ($posA===false) {
            $q.=", image=:image";
        }
        if ($posB===false){
            $q.=", image2=:image2";
        }
        if ($posD===false){
            $q.=", image3=:image3";
        }
        if ($posE===false){
            $q.=", image4=:image4";
        }
        if ($posF===false){
            $q.=", image5=:image5";
        }
        $q.="WHERE id=:id;";

        $query=$c->prepare($q);
        $query->bindParam(':id',$this->id,PDO::PARAM_INT);
        $query->bindParam(':id_art',$this->id_art,PDO::PARAM_INT);
        $query->bindParam(':article',$this->article,PDO::PARAM_STR);
        $query->bindParam(':id_doc',$this->id_doc,PDO::PARAM_STR);
        $query->bindParam(':document',$this->document,PDO::PARAM_STR);
        $query->bindParam(':ilot',$this->ilot,PDO::PARAM_INT);
        $query->bindParam(':emplacement',$this->emplacement,PDO::PARAM_STR);
        $query->bindParam(':liste_tubes',$this->liste_tubes,PDO::PARAM_STR);

        if ($posA===false){
            $query->bindParam(':image',$this->image,PDO::PARAM_STR);
        }
        if ($posB===false){
            $query->bindParam(':image2',$this->image2,PDO::PARAM_STR);
        }
        if ($posD===false){
            $query->bindParam(':image3',$this->image3,PDO::PARAM_STR);
        }
        if ($posE===false){
            $query->bindParam(':image4',$this->image4,PDO::PARAM_STR);
        }
        if ($posF==false){
            $query->bindParam(':image5',$this->image5,PDO::PARAM_STR);
        }
        $query->execute();

我没有错误。但是当我测试那些时,我从updateOutil()得到了正确的“消息”,但我的数据库没有更新。我认为这是一个关于如何“构建”我的SQL请求的问题。

我四处搜索,找不到任何有用的话题。因为几个小时后我就坚持这个,所以任何帮助都将受到赞赏: - )

2 个答案:

答案 0 :(得分:1)

使用var_dump()观看变量并调试应用程序。如果出现问题,你应该至少得到一个例外。

答案 1 :(得分:0)

好吧,我找到了解决方案。我认为必须有一些关于准备查询的规则,我没有遵循,因为我需要做的是为每个图像创建单独的查询并分别上传它们。所以在我的updateImg()函数中,现在每个if条件都有

if ($posA===false){
            $query=$c->pepare('UPDATE outillage SET image:=image WHERE id:=this')
            $query->bindParam(':id',$this->id,PDO::PARAM_INT);
            $query->bindParam(':image',$this->image,PDO::PARAM_STR);
            $query->execute()
        }

在我所有的ifs之后我通常更新其他属性