Re: Problème WHERE
JLuc <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
C'est surtout le calcul de ces critères qui a foiré son calcul
en laissant les quotes autour de "'='" et "'sql_quote(..)'"
et après c'est normal que ça provoque une erreur.
Je demandais hier sur irc : quand tu cites le message d'erreur
il y a ce qui ressemble à la pile d'appel :
"[sql_select(), calculer_select(), objet_test_si_publie(), inc_determiner_statut_document(), document_instituer(),
medias_post_edition(), etc ]
C'est étonnant ça : c'est SPIP qui a gardé une trace de la pile d'appel ayant calculé les critères
et qui la présente ainsi ou c'est toi ?
Cette pile c'est justement ce qui semble construire les critères.
Ça décrit, dans le pipeline post_edition, le calcul du statut du document
à partir du statut de l'objet auteur il est lié.
objet_test_si_publie appelle instituer_boucle
et on dirait que instituer_boucle se trompe :
- Dans le cas où il y a une exception (cas 'visiteur'), ça retourne prématurément
et ça n'appelle pas fabrique_jointures et ça se passe bien
- mais dans le cas administrateur, ça appelle fabrique_jointures
et c'est un peu comme si fabrique_jointures était alors appelé avec $echap=true
et du coup le calculer_select se plante après
Note que dans ton message d'erreur, c'est id_auteur 21 qui apparaît
et non 13 comme tu le dis. Ça change quelque chose ?
JL
Le 14/04/2021 à 01:06, pierre laszczak a écrit :
> C'est entre quote car ça doit génère du code à interpréter. Il me semble que les fonctions calculer_XX s'exécutent dans
> l'environnement de compilation pour produire du php.
> Est-ce que c'est une erreur bloquante qui t'empêche de joindre le document?
>
> Vu le code, je dirai que c'est une requête générée par une boucle. Je pense plutôt que ça vient d'un critère foireux ou
> d'un mauvais paramètre passer en critère.
> T'as pas une Boucle *AUTEURS* avec une jointure qui se ferait sur documents_liens et articles? (AUTEURS
> documents_liens){objet?} ou un truc du genre (pour afficher un résumer de l'upload par exemple...)
>
> Perso je vois pas où pourrait se cacher cette requête dans l'api joindre_document...
>
> Bon courage & bonne nuit ;)
> Le mer. 14 avr. 2021 à 00:11, tofulm <[email protected] <mailto:[email protected]>> a écrit :
>
> la fonction calculer_mysql_where($where)
>
> si elle prend en entrée un array :
>
> Array (
>
> [0] => '='
>
> [1] => 'L1.objet'
>
> [2] => sql_quote('article')
>
> )
>
>
> va produire :
>
> $arg = "'L1.objet'";
>
> $arg2 = "sql_quote('article')";
>
> $op = "'='";
>
> Donc
>
> return "($arg $op $arg2)"; => donne : ('L1.objet' '=' sql_quote('article'))
>
> Pourquoi dans la valeur d'entrée le = et L1.objet sont entre quote ?
>
> Je continue mes investigations
>
>
>
>
> --
>
> tofulm
>
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev <https://listes.rezo.net/mailman/listinfo/spip-dev>
> doc: https://www.spip.net/ <https://www.spip.net/>
> dev: https://core.spip.net/ <https://core.spip.net/>
> irc://irc.freenode.net/spip <http://irc.freenode.net/spip>
>
>