2010-07-20 1 views
0

J'essaye de mettre à jour un champ d'email dans Mysql par php. Je continue d'obtenir cette erreur: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@yahoo.com,METTRE À JOUR le problème de la table avec l'adresse e-mail

La cellule dans Mysql est varchar (100). Les adresses e-mail sont saisies dans une zone de texte.

$insert_fbacc="UPDATE jos_users SET email=".$_POST['email']", WHERE id='$user->id'";

avec le code précédent, mysql mises à jour seulement la moitié de l'adresse e-mail, seule la partie @yahoo.com.

J'ai essayé de convertir $ _POST ['email'] en chaîne et le résultat est l'erreur que j'ai écrite.

EDIT:

Merci les gars, vous êtes grand!

J'ai découvert ce que c'était ... mauvaise syntaxe et j'ai oublié de m'enfuir.

Merci beaucoup!

Répondre

0

En fait, vous semblez avoir une erreur de syntaxe dans le code (aucun point après $_POST['email']).

Et la variable elle-même n'est pas entourée de guillemets. Il devrait être:

$insert_fbacc="UPDATE jos_users SET email='{$_POST['email']}', WHERE id='$user->id'"; 

En outre, ne pas oublier d'échapper à la variable en utilisant mysql_real_escape_string:

$_POST['email'] = mysql_real_escape_string($_POST['email']). 
0

Dans cette chaîne de requête exacte, je peux voir un problème.

$insert_fbacc="UPDATE jos_users SET email=".$_POST['email']", WHERE id='$user->id'"; 

Vous devez ajouter un '' après $ _POST [ 'Email'], pour autant que je peux dire, à faire:

$insert_fbacc="UPDATE jos_users SET email=" . $_POST[ 'email' ] . ", WHERE id='$user->id'"; 

Ne pas oublier d'échapper à des personnages!

+0

Il y a un problème dans la requête, ce serait: 'UPDATE ... SET [email protected] ...'. – Mewp

+0

En effet! J'ai raté ces petits ... – chudley

1

toujours échapper entrée:

$insert_fbacc="UPDATE jos_users SET email='".mysql_real_escape_string($_POST['email'])."' WHERE id='".mysql_real_escape_string($user->id)."'"; 
3

Je vois trois erreurs:

  • Chaîne valeur doit être placée entre guillemets:

    $insert_fbacc="UPDATE jos_users SET email='".$_POST['email']"', WHERE id='$user->id'"; 
    //          ---^    ---^        
    
  • concaténation de chaîne manquante:

    $insert_fbacc="UPDATE jos_users SET email='".$_POST['email']."', WHERE id='$user->id'"; 
    //              ---^ 
    
  • Supprimer la virgule:

    $insert_fbacc="UPDATE jos_users SET email='".$_POST['email']."' WHERE id='$user->id'"; 
    //               ---^ 
    

Comme déjà mentionné, ne oublie d'utiliser mysql_real_escape_string().

+0

Et Ye Gods man .. n'oublie pas de t'échapper. Les fonctions filter_input sont géniales: http://www.phparch.com/2010/07/08/never-use-_get-again/ – CaseySoftware

Questions connexes