Problème de syntaxe ?

Eléphant du PHP | 51 Messages

14 juil. 2021, 22:34

Bonjour à tous

J'ai mon code ici qui fonctionne parfaitement quand je passe l'argument WHERE en dur soit

Code : Tout sélectionner

$ModifierDisque="UPDATE $id_patient SET artiste='$presc' WHERE id_acte = 1626222740";
Mais qui ne fonctionne pas quand je tente d'insérer une variable

Code : Tout sélectionner

[code]$ModifierDisque="UPDATE $id_patient SET artiste='$presc' WHERE id_acte = $disque";
[/code]

Pourtant l'écho $disque renvoit bien la meme chose

Le champs dans la base est un bigint
J'ai tenté les " les ' ' mais rien n'y fait

Merci de votre aide

Avatar du membre
Eléphant du PHP | 70 Messages

15 juil. 2021, 08:36

Salut !

Tes variables doivent être passé entre guillemet. D'ailleurs tu la fait pour ta variable $presc mais pas pour $disque ni pour $id_patient
$ModifierDisque="UPDATE '$id_patient' SET artiste='$presc' WHERE id_acte = '$disque'"
EDIT : Tu peux d'ailleurs passer également par la concaténation de PHP, bien qu'un plus brouillon
$ModifierDisque="UPDATE $id_patient SET artiste='$presc' WHERE id_acte = $disque";
$ModifierDisque = "UPDATE ";
$ModifierDisque .= $id_patient;
$ModifierDisque .= " SET artiste='";
$ModifierDisque .= $presc;
$ModifierDisque .= "' WHERE id_acte = '";
$ModifierDisque .= $disque;
$ModifierDisque .= "'";
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

Mammouth du PHP | 2703 Messages

15 juil. 2021, 12:41

Tes variables doivent être passé entre guillemet.
non, les chaines doivent être entre guillemet, rien d'obligatoire pour les nombres.

faire un var_dump de $disque
afficher la requête entière et l’exécuter dans phpmyadmin pour voir ce que cela dit.

Eléphant du PHP | 51 Messages

16 juil. 2021, 20:03

Salut et merci pour les réponses :)
Bizarement sans que je me l'explique le fait de faire un

Code : Tout sélectionner

$nouvelle_var = $varquiposeprobleme;
me règle mon souci, par contre je ne me l'explique pas. Mais ca marche.