-3

我有一个更新表中一行的函数,当我对电子邮件值进行硬编码时,查询可以工作,但是当我想发送该值$_SESSION时,因为行中没有任何事情发生,我也不会收到任何错误。

我的工作查询是:

function profile_name($profile_name){
    $profile_name = mysql_real_escape_string(htmlentities($profile_name)); 
    mysql_query("UPDATE user SET user_name = '{$profile_name}' WHERE user_email = 'my@email.com' ");
}

当我my@email.com使用以下代码发送 as 会话时:

(isset($_POST['profile'], $_POST["{$_SESSION['email']}"])){ } 
 function profile_name($profile_name, $email){
    $profile_name = mysql_real_escape_string(htmlentities($profile_name)); 
        mysql_query("UPDATE user SET user_name = '{$profile_name}' WHERE user_email = '{$email}' ");
    }

什么都没发生。

如果我回显会话$_SESSION['email'],它会打印my@email.com

4

2 回答 2

1

仍然试图通过“发送 $_SESSION”来理解您的意思,但是这个语句看起来很奇怪:

$_POST["{$_SESSION['email']}"]

它的作用是$_SESSION使用 key 从数组中获取一个值email,然后将此值用作$_POST数组的键。

假设您$_SESSION['email']设置为myemail@hotmail.com,它会期望$_POST['myemail@hotmail.com']返回一个值。为此,您的表单必须有一个带有 name 的输入控件myemail@hotmail.com

由于这是一种非常不规则的做事方式,我认为这可能是一个问题,除非它是您问题中的拼写错误。

您可能打算这样做:

if (isset($_POST['profile'], $_SESSION['email'])) {...
于 2013-04-12T12:19:46.430 回答
0

我认为两列都不是整数,所以值应该用单引号引起来,

UPDATE user SET user_name = '{$profile_name}' WHERE user_email = '{$email}'

我会建议你打开使用PDOor MySQLi

于 2013-04-12T11:49:35.160 回答