我有一个更新表中行的函数,当我对电子邮件值进行硬编码时查询有效,但是当我想将值发送为$_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
会话时:
(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
答案 0 :(得分:1)
仍然试图通过“发送$ _SESSION”来理解你的意思,但这句话看起来很奇怪:
$_POST["{$_SESSION['email']}"]
它的作用是使用密钥$_SESSION
从email
数组中获取值,然后将此值用作$_POST
数组的键。
假设您的$_SESSION['email']
设置为myemail@hotmail.com
,则期望$_POST['myemail@hotmail.com']
返回一个值。为此,您的表单必须具有名为myemail@hotmail.com
的输入控件。
由于这是一种非常不规范的做事方式,我认为这可能是一个问题,除非你的问题是一个错字。
你可能想要做的是:
if (isset($_POST['profile'], $_SESSION['email'])) {...
答案 1 :(得分:0)
我认为两列都不是整数,所以值应该用单引号包装,
UPDATE user SET user_name = '{$profile_name}' WHERE user_email = '{$email}'
我建议您使用PDO
或MySQLi
开启。