我在更新用户个人资料的网站上运行查询。它会更新每个字段但 电子邮件字段。实际上它并没有对电子邮件领域做任何事情。
我将$ email变量定义为:
$email = str_replace(" ", "", trim($_POST['email']));
然后我使用我的数据库包装器来更新它:
MySQL::do_query(
$db,
"UPDATE customer
SET
email=?,
firstname=?,
surname=?,
phonenumber=?,
street_address=?,
postcode=?,
city=?,
extra_2=?,
ssn=?,
password=?
WHERE customer_id=?
AND password=?",
array($email, $firstname, $surname, $phone, $address, $zip, $city, $extra_2, $ssn, StringConverter::generate_hash($email, $_POST['pw']), $customer, StringConverter::generate_hash($email, $_POST['pw']))
);
但是,然后问题是,它不会更新电子邮件字段。其他所有领域都更新得很好。我已经尝试运行单独的查询,更新只是电子邮件,这也不起作用。
插入时工作正常,只是不更新。到目前为止,我不知道会出现什么问题。并且$ email变量保存正确的电子邮件地址,尽管查询似乎忽略了它。有什么想法吗?
答案 0 :(得分:1)
您是否尝试过多次更新电子邮件?我猜不是,因为我认为如果您更改电子邮件,那么整个更新将无法正常执行...这是因为您在$email
中使用StringConverter::generate_hash($email, $_POST['pw'])
,但如果电子邮件已更改,然后该行将不符合where子句中的密码检查。