求助主题:mysql数据库更新数据问题

3 views
Skip to first unread message

何建博

unread,
Oct 4, 2012, 3:32:59 AM10/4/12
to lzui...@googlegroups.com
 问题描述如下,现欲更新数据库中某一字段的值,代码如下:

    $user=$_SESSION['user'];
    $safemail = (string)$_POST['mail'];
    mysql_query('set names gbk');
    $sql="UPDATE tbl_user SET safemail='$safemail' where AccountID='$user' limit 1";
    $result = mysql_query($sql);
    $total_count = mysql_affected_rows();
    if($total_count==1)
    {
    echo("<script>alert('设置成功!');self.location='user.php';</script>");
    }
    else
    {
    Error("设置出错,请重新设置!");
    }

当我将$sql语句中的$safemail 替换为任何常量时,此常量都可以更新入数据库,并且后面判断为“设置成功”,
但是当我写成$safemail变量时,后面显示“设置成功”,但数据库的数据并不更新,不知是何原因。


youly Liu

unread,
Oct 4, 2012, 9:33:04 PM10/4/12
to lzui...@googlegroups.com
应该是php单引号和双引号的问题。‘’里面直接输出,“”里面会经过编译器解释。改成这样试一下。

"UPDATE tbl_user SET safemail='".$safemail."' where AccountID='".$user."' limit 1";

何建博

unread,
Oct 4, 2012, 9:38:48 PM10/4/12
to lzui...@googlegroups.com
嗯,这个之前试过了,不行,事实是偶尔它能够更新成功并一直保持,还有一次是调试时我发现提交的瞬间数据库里已经更新成功了,但是过了几秒刷新数据库发现又变回原来的了

何建博

unread,
Oct 5, 2012, 1:23:34 AM10/5/12
to lzui...@googlegroups.com
问题补充:我将代码改为下面这样:

$user=$_SESSION['user'];
$safemail =$_POST['email'];
mysql_query("SET NAMES UTF8");
echo("");
$sql="UPDATE tbl_user SET safemail='$safemail' where AccountID='$user'";
$result = mysql_query($sql);
if($result)
{
echo("");
}
else
{
echo("");
}

$total_count = mysql_affected_rows();
if($total_count==1)
{
echo("");

}
else
{
Error("设置出错,请重新设置!");
}

提交运行后依次弹出:“安全邮箱为:**@**。com”,"更新成功"“设置成功”,但是数据库中的数据被更新为空值,不知道怎么回事
Reply all
Reply to author
Forward
0 new messages