我正在尝试将数据数组传递给Update查询,以更新客户记录。但是出于某种原因,“成功”页面显示我的详细信息已经更新,但事实并非如此。如果我调试并回显
echo implode(', ', $update);
die();
我得到了结果
mem_first_name
='Josh',mem_last_name
='smith',mem_email
='j.smith @ gmail.com',allow_email
='0'
这对我来说很好看。这是我的update_user函数
function update_user($mem_id, $update_data) {
$update = array();
array_walk($update_data, 'array_sanitize');
foreach ($update_data as $field=>$data) {
$update[] = '`' . $field . '` = \'' . $data . '\'';
}
mysql_query("UPDATE `members` SET " . implode(', ', $update) . " WHERE `mem_id` = '$mem_id'") or die(mysql_error());
}
我的$ update_data数组
if (isset($_GET['success']) === true && empty($_GET['success']) === true) {
$message = 'Your details have been updated';
} else {
if (empty($_POST) === false && empty($errors) === true) {
$update_data = array(
'mem_first_name' => $_POST['mem_first_name'],
'mem_last_name' => $_POST['mem_last_name'],
'mem_email' => $_POST['mem_email'],
'allow_email' => ($_POST['allow_email']) ? 1 : 0
);
update_user($session_member_id, $update_data);
header('Location: settings.php?success');
exit();
} else if (empty($errors) === false) {
$message = output_errors($errors);
}
}
所以我已经解决了我在内爆之后失去了我的反引号,因此列名没有反向标记
答案 0 :(得分:0)
这是某种拼写错误(因此当然不是真正的问题) 您正在向字段添加反引号
$update[] = '`' . $field . '`
^ here
但他们在调试中缺席。
所以,你要么运行错误代码,要么整个问题毫无意义。
答案 1 :(得分:0)
检查与db和表字段名称拼写的连接。我认为此代码没有问题。