Вы должны правильно использовать API drupal, вместо того, чтобы напрямую вызывать функции, также вы должны обернуть свои таблицы {} для поддержки префиксов таблиц.
$sql= "UPDATE {user} SET email='%s' WHERE uname='%s';"
if(db_query($sql, $_POST['email'], thisuser->getUserName())&& db_affected_rows()){
..
}
Другое дело, что если это делается в форме, вы должны использовать API формы и использовать валидатор подтверждения для запуска этого кода.Также у Drupal нет таблицы user
, но у него есть users
, чтобы избежать путаницы, вы можете переименовать вашу пользовательскую таблицу.Если вы хотите обновить учетную запись пользователя drupal, вы должны сделать что-то вроде этого.
function my_form($form_state) {
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#description' => t('The title you enter here appears on the page.'),
);
return $form;
}
function my_form_validate(&$form, &$form_state) {
$mail = $form_state['values']['email'];
// Validate the email, user form_set_error(), to raise error
}
function my_form_submit(&$form, &$form_state) {
$mail = $form_state['values']['email'];
global $user;
$sql= "UPDATE {users} SET mail='%s' WHERE name='%s';"
if(db_query($sql, $mail, $user->name) && db_affected_rows()) {
drupal_set_message(t('Update successful'));
}
else {
..
}
}