2010-11-24 6 views
0

Y at-il un problème avec la syntaxe de cette requête MySQL?La syntaxe de cette requête MySQL peut être erronée

Merci à l'avance,

John

$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = ".$row['username'].""); 

EDIT: D'accord, par la demande de Pekka, je repris la valeur de la requête réelle, et cela m'a donné quelques idées. Maintenant, je suis en utilisant ceci:

$ttquery = "Update login SET ttemail = 1 WHERE username = ".$row['username'].""; 

et je reçois cette erreur: Unknown column 'admin' dans 'où la clause'. "admin" est le premier nom d'utilisateur qui remplit la condition pour laquelle je veux exécuter cette requête ... ce n'est pas le nom d'un champ. Des idées sur pourquoi je reçois l'erreur?

EDIT: Voici MySQL fait écho requête MySQL si cela aide:

Update login SET ttemail = 1 WHERE username = admin 
+1

@John pas d'infraction, mais c'est la quatrième fois que j'essaie de vous dire ** s'il vous plaît montrer la requête finale générée et non la source PHP. ** Il est impossible de déboguer une requête de la source PHP, car le erreur pourrait être dans l'une des variables. –

+0

Peut-être que faux? Exécutez-le et vous verrez si c'est faux ou non. Nous ne pouvons pas vous le dire puisque nous ne connaissons pas la structure de votre table et ce que $ row contient ... –

+0

Cela dépend des valeurs de '$ row ['ttemail']' et '$ row ['nom d'utilisateur']' . – Gumbo

Répondre

3

Vous avez probablement besoin des guillemets simples autour de nom d'utilisateur

$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'"; 

Si vous utilisez sprintf, vous avez :

$ttquery = sprintf("Update login SET %1$s = '1' WHERE username = '%2$s'", $row['ttemail'],$row['username']); 
+0

+1 Il manque des guillemets simples autour de la valeur. – redShadow

+0

"% 1 $ s" -> en êtes-vous sûr? Vous vouliez dire '% 1 $ s' ou "% 1 \ $ s", je suppose ..: P – redShadow

0

essayer ceci

$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = '" . $row['username'] ."'" 

à savoir, le nom d'utilisateur = '[votre valeur]'

1
Update login SET ttemail = 1 WHERE username = admin 

Dans SQL, les chaînes sont entourées par des guillemets simples et table/noms de colonnes sont non cotés. Vous devez corriger votre code PHP afin que vous générez ceci:

Update login SET ttemail = 1 WHERE username = 'admin' 

Essayez de vous assurer de comprendre SQL de base avant de taper la tête contre

PHP ;-)
0

Cela devrait fonctionner:

$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'";

0

homme, faites attention aux injections sql. Aussi, pourquoi appeler sprintf() si vous ne l'utilisez pas vraiment?

Questions connexes