запрос wpdb с использованием дубликата ключа для проверки обновления / вставки

Я пытаюсь использовать запрос ниже, чтобы вставить строку в мою таблицу wp_postmeta. Если эта строка уже существует, например, meta_id ключ не уникален, мне нужно обновить эту строку с помощью meta_value в конце запроса.

Это то, что я до сих пор

$wpdb->insert( 'wp_postmeta', array('post_id' => $productID[0], 'meta_key' => 'custom_field', 'meta_value' => 'worked'), array("%d","%s","%s") . " ON DUPLCIATE KEY UPDATE meta_value = changed " );

Но вот как выглядит мой последний запрос:

string(226) "INSERT INTOwp_postmeta(post_id,meta_key,meta_value) VALUES (Array ON DUPLCIATE KEY UPDATE meta_value = changed ,Array ON DUPLCIATE KEY UPDATE meta_value = changed ,Array ON DUPLCIATE KEY UPDATE meta_value = changed )"

Как вы можете видеть, что-то в дублирующем ключе сбрасывает это.

-1

Решение

Вы не должны делать это с помощью вставки объекта wpdb. Глядя на документацию:

$wpdb->insert( $table, $data, $format );

переменная $ формат должен быть массив или же строка, если вы объедините строку SQL с вашим массивом, это вызовет неожиданное поведение. И вы не можете объединить массив со строкой с точкой.

Вам лучше использовать необработанный SQL-запрос с

$wdpb->query('your query')

Или даже лучше:

$wdpb->query($wdpb->prepare('your query'))

быть защищенным от инъекций, если значения являются пользовательскими.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]