8791 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai une base de donnée MySQL et un formulaire PHP pour en modifier les entrées.
Le formulaire fonctionne, les données sont bien récupérées dans des variables mais lorsque je soumet mon formulaire, l'entrée de la base de donnée n'est pas modifiée.
Voici le code de la requête :


# Remplissage des variables ici

$insert_q = $bdd->prepare("UPDATE lois SET id = :id, origine = :origine, type = :type, titre = :titre, procedure_acl = : procedure_acl, 1l1a = :l1a1, date-d-1l1a = :date_d_1l1a, commission-1l1l = :commission_1l1a, raporteur-1l1a = :rapporteur_1l1a, date-dec-1l1a = :date_dec_1l1a, sort-1l1a = :sort_1l1a, date-d-1l2a = :date_d_1l2a, commission-12a = :commission_1l2a, raporteur-1l2a = :rapporteur_1l2a, date-dec-1l2a = :date_dec_1l2a, sort-1l2a = :sort_1l2a, modif-1l2a = :modif_1l2a, date-d-2l1a = :date_d_2l1a, date-dec-2l1a = :date_dec_2l1a, sort-2l1a = :sort_2l1a, date-d-2l2a = :date_d_2l2a, date-dec-2l2a = :date_dec_2l2a, sort-2l2a = :sort_2l2a, modif-2l2a = :modif_2l2a, date-cmp = :date_cmp, raporteur-an = :rapporteur_an, raporteur-senat = :rapporteur_senat, decision = :decision, cmp-an = :cmp_an, cmp-senat = :cmp_senat, date-d-dl = :date_d_dl, date-dec-dl = :date_dec_dl, sort-dl = :sort_dl, date-s-cc = :date_s_cc, date-dec-cc = :date_dec_cc, dec-cc = :dec_cc, date-promulg = :date_promulg, lien-dossier-an = :lien_dossier_an, lien-dec-cc = :lien_dec_cc, lien-jo = :lien_jo, modif = :modif WHERE id = :id");
            $insert_q->execute(array(
                'id' => $id,
                'origine' => $origine,
                'type' => $type,
                'titre' => $titre,
                'procedure_acl' => $procedure_acl,
                'l1a1' => $l1a1,
                'date_d_1l1a' => $date_d_1l1a,
                'commission_1l1a' => $commission_1l1a,
                'rapporteur_1l1a' => $rapporteur_1l1a,
                'date_dec_1l1a' => $date_dec_1l1a,
                'sort_1l1a' => $sort_1l1a,
                'date_d_1l2a' => $date_dec_1l2a,
                'commission_1l2a' => $commission_1l2a,
                'rapporteur_1l2a' => $rapporteur_1l2a,
                'date_dec_1l2a' => $date_dec_1l2a,
                'sort_1l2a' => $sort_1l2a,
                'modif_1l2a' => $modif_1l2a,
                'date_d_2l1a' => $date_d_2l1a,
                'date_dec_2l1a' => $date_dec_2l1a,
                'sort_2l1a' => $sort_2l1a,
                'date_d_2l2a' => $date_d_2l2a,
                'date_dec_2l2a' => $date_dec_2l2,
                'sort_2l2a' => $sort_2l2a,
                'modif_2l2a' => $modif_2l2a,
                'date_cmp' => $date_cmp,
                'rapporteur_an' => $rapporteur_an,
                'rapporteur_senat' => $rapporteur_senat,
                'decision' => $decision,
                'cmp_an' => $cmp_an,
                'cmp_senat' => $cmp_senat,
                'date_d_dl' => $date_d_dl,
                'date_dec_dl' => $date_dec_dl,
                'sort_dl' => $sort_dl,
                'date_s_cc' => $date_s_cc,
                'date_dec_cc' => $date_dec_cc,
                'date_promulg' => $date_promulg,
                'lien_dossier_an' => $lien_dossier_an,
                'lien_dec_cc' => $lien_dec_cc,
                'lien-jo' => $lien_jo,
                'modif' => $modif,
                'id' => $id
            ));


Je ne trouve pas le problème
Modifié par Papoulain (11 Mar 2014 - 16:34)
Salut, la virgule n'a pas été oubliée et de toute façon il y a deux fois id dans l'array. Fait un "echo" de ta requête et exécute la directement en SQL (via phpmyadmin par exemple). S'il y a, quelle erreur de retour as-tu?
Lorsque je fais un echo de la requête ($insert_q), rien ne s'affiche, même pas le reste de la page
Modifié par Papoulain (10 Mar 2014 - 19:34)
Au pif je crois que tu peux faire ça:

echo $insert_q->queryString;


Regarde la doc pour être sûr. Smiley cligne
echo $insert_q->queryString;
fonctionne mais il me ressort la requête avec les variables non remplacées par les valeurs
totopsy a écrit :
bindParam?

Pas eu besoin !

J'ai repris la requête terme par terme en entourant le nom des champs SQL par des guillemets de protection (`). Je ne sais pas si c'est la seule cause du problème mais quoi qu'il en soit, maintenant, tout fonctionne !
Oui le problème provenait de tes tirets dans les noms de champs. Je pense que personne au final n'avait lu ta requête, trop longue, c'est pourquoi on te lançait sur le côté debug. Au final tu as trouvé Smiley smile
Modifié par floreo (11 Mar 2014 - 18:56)