我正在尝试通过php更新Mysql中的电子邮件字段。
我不断收到此错误: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,
Mysql中的单元格是varchar(100)。 电子邮件地址是从文本框中输入的。
$insert_fbacc="UPDATE jos_users SET email=".$_POST['email']", WHERE id='$user->id'";
使用上面的代码,mysql只更新了电子邮件地址的一半,只更新了@yahoo.com
部分。
我试图将$ _POST ['email']转换为字符串,结果是我写的错误。
编辑:
谢谢你们,你们真棒!
我发现它是什么......语法不好而忘了逃避。
非常感谢!
答案 0 :(得分:3)
我看到三个错误:
字符串值必须用引号括起来:
$insert_fbacc="UPDATE jos_users SET email='".$_POST['email']"', WHERE id='$user->id'";
// ---^ ---^
缺少字符串连接:
$insert_fbacc="UPDATE jos_users SET email='".$_POST['email']."', WHERE id='$user->id'";
// ---^
删除逗号:
$insert_fbacc="UPDATE jos_users SET email='".$_POST['email']."' WHERE id='$user->id'";
// ---^
如前所述,不要忘记使用mysql_real_escape_string()
。
答案 1 :(得分:1)
始终逃避输入:
$insert_fbacc="UPDATE jos_users SET email='".mysql_real_escape_string($_POST['email'])."' WHERE id='".mysql_real_escape_string($user->id)."'";
答案 2 :(得分:0)
在那个确切的查询字符串中,我可以看到一个问题。
$insert_fbacc="UPDATE jos_users SET email=".$_POST['email']", WHERE id='$user->id'";
您需要添加'。'在$ _POST ['email']之后,据我所知,做出:
$insert_fbacc="UPDATE jos_users SET email=" . $_POST[ 'email' ] . ", WHERE id='$user->id'";
不要忘记逃避角色!
答案 3 :(得分:0)
实际上,您似乎在代码中有语法错误($_POST['email']
之后没有点。)
变量本身没有引号括起来。 它应该是:
$insert_fbacc="UPDATE jos_users SET email='{$_POST['email']}', WHERE id='$user->id'";
另外,不要忘记使用mysql_real_escape_string转义变量:
$_POST['email'] = mysql_real_escape_string($_POST['email']).