it-roy-ru.com

WordPress обновление MySQL таблицы

Я пишу плагин для Wordpress, который должен проверить, если запись MySQL уже существует.
Если он не существует, Wordpress должен вставить запись в таблицу. Эта часть работает, как я ожидал.
Однако, если в таблице mysql уже есть запись, Wordpress должен обновить таблицу, но это не работает.

Код, который я использую для этого, является следующим кодом:

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time=$current_timestamp WHERE userid=$userid"));

Переменные, которые я использую в этом запросе, являются правильными, потому что они успешно используются для вставки в таблицу, но где-то по пути что-то идет не так с функцией обновления.

Может кто-нибудь сказать мне, что я здесь делаю не так?
Как правильно поступить?

7
Gabi Barrientos

значение столбца time должно быть заключено в single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
9
John Woo
$result = $wpdb->update('westend_areaofficers', array('officerOrder' => $memberOrder,
'officerTitle' => $memberTitle, 'officerName' => $memberName, 'officerPhone' => 
 $memberPhone), array('officerId' => $memberId), array('%d','%s', '%s', '%s'),
 array('%d'));

if($result > 0){
echo "Successfully Updated";
}
else{
  exit( var_dump( $wpdb->last_query ) );
}
$wpdb->flush();

Вышеупомянутое решение работает для меня, потому что с помощью $ wpbd-> query ($ wpbd-> prepare ()) оператор не работает даже при передаче в правильных числовых и строковых форматах.
Цель функции var_dump () - увидеть, где выполняется запрос пошло не так. Распечатывает запрос и передаваемые значения. Конечно используя функция $ wpdb-> flush () очищает кэш для следующего выполнения запроса.

2
Marcus
UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com', 'http://localhost/test-site') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.example.com', 'http://localhost/test-site');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.example.com','http://localhost/test-site');
1
Savan Dholu

Пример:

изменить ник (имя пользователя 546) на Harde_Bande

$execut= $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_nicename = %d WHERE ID = %s", "Harde_Bande", 546 ) );
var_dump($execut);

Узнайте больше по адресу: http://codex.wordpress.org/Class_Reference/wpdb#Examples

0
T.Todua