-2
votes

Mettre à jour la requête ne fonctionne pas mais le code semble bien

Voici la chaîne de requête que j'utilise, j'ai essayé de nombreuses iTTERATIONS différentes ...

if (!mysqli_query($db_connection,'UPDATE `questions` SET 
`question`='.$question.', `answer1`='.$answer1.', `answer2`='.$answer2.', 
`answer3`='.$answer3.', `answer4`='.$answer4.', `rationale`='.$rationale.', 
`resources`='.$resources.' WHERE `question_id`='.$id))
            {
                echo("Error description: " . mysqli_error($db_connection));
            }


4 commentaires

Je suggérerais d'utiliser Préparation des déclarations et BIND_PARAM . Autre que la prévention de l'injection SQL, elle supprime beaucoup de maux de tête puisqu'il supprime la nécessité de vous inquiéter de cibler vos variables.


Comme Aynber dit, l'utilisation de déclarations préparées résoudrait probablement le problème ici car vous n'avez pas besoin de traiter de la citation. Mettre à jour à cela et si le problème persiste, éditez-vous de montrer le problème résultant.


Il y a généralement un peu plus à ce message d'erreur ... quelque chose à propos de proches .. qui peut aider à identifier l'endroit où vous vous trompez. Mais comme cela a déjà été souligné, des déclarations préparées sont la voie à suivre.


Merci tout le monde je vais essayer ces! ... Je ne suis pas préoccupé par l'injection ... Ceci est sur un serveur de deviro que j'ai accès à et je n'exécuterai ce script qu'une seule fois et que vous supprimez le fichier lorsque c'est terminé. Cela ne va pas sur une page de production.


3 Réponses :


0
votes

Ce n'est pas un cas d'utilisation de citations simples ou doubles, mais faites les deux correctement, vous devez envelopper vos cordes dans des citations doubles et ouvertes et fermez votre concaténation avec des célibataires, par exemple «Réponse» = ».». .... Ensuite, les citations font partie de votre chaîne.


1 commentaires

Mais aussi, vous devez utiliser PDO, pour citer Charlie de Top Gun, je pense que nous avons montré cela comme exemple de ce que de ne pas faire ...



0
votes

Essayez ceci: xxx


0 commentaires

0
votes

Tout d'abord, car les commentaires énoncés des déclarations préparées est la voie à suivre. Vous êtes ouvert à l'injection SQL.

Deuxièmement, comme pour le message d'erreur MySQL, on dirait que vous manquez une seule citation à la fin de votre requête. où question_id = '. $ ID . Élacez également la chaîne de requête et vous remarquerez que votre requête n'a pas de citations simples autour de vos paramètres. Vous utilisez des guillemets simples pour créer la chaîne de requête mais pas pour les paramètres de requête. Utilisez des guillemets doubles pour la chaîne de requête et des guillemets simples pour les paramètres: xxx


0 commentaires