как обновить специальные подстроки в php mysql - PullRequest
0 голосов
/ 15 июня 2019

Я знаю, как обновить строки базы данных, используя pdo.

Например, чтобы обновить строку meta_key , где ИД пользователя равен 15 .Я могу просто сделать

$meta_data='mycontent';
$user_id b='15';
$update1 = $db->prepare('
            UPDATE my_table set
            meta_key = :meta_key WHERE user_id= :user_id');

        $update1->execute(array(
            ':meta_key' => $meta_data,':user_id' => $user_id));

Вот обновление немного сложное, как видно на скриншоте ниже.

screenshot

user_id равно 15 для meta_key и meta_value столбцов

meta_key столбец состоит из трех строк first_name,last_name, описание , в то время как для meta_value столбцы, соответствующие значения строк пусты.

Мне нужно обновить значения строк meta_values ​​, чтобы они равнялись meta_key строк, где user_id, например, 15

.это то, что я хочу с помощью операторов обновлений в моей базе данных

**user_id  meta_key      meta_value**

  15     first_name    john

  15     last_name     canoon

  15     description    I am john cannon

Тротически, мне нужно как обычно запускать переменные

$first_name='john';
$last_name='canoon'; 
$desc='I am john cannon';
$user_id b='15';

$meta['first_name']=$first_name;
$meta['last_name']=$last_name;
$meta['description']=$desc;

пожалуйста, как будут выглядеть обновления.Я догадался, что должен использовать для каждого цикла что-то вроде кода ниже.кто-нибудь может мне помочь

foreach ( $meta as $key => $value ) {
    // updates database
}

1 Ответ

0 голосов
/ 15 июня 2019
 $first_name='john';
    $last_name='canoon'; 
    $desc='I am john cannon';
    $user_id ='15';

    $meta['first_name']=$first_name;
    $meta['last_name']=$last_name;
    $meta['description']=$desc;

Решение -1
Используйте подготовленное утверждение.подготовленный оператор - это функция, используемая для многократного выполнения одних и тех же (или похожих) операторов SQL.

<?php

$sql = "UPDATE my_table SET meta_values=:meta_values WHERE meta_key =:meta_key and user_id = $user_id ";
$query = $db->prepare($sql);

foreach($meta as $key => $value){
   $query->bindParam(':meta_values', $value);
   $query->bindParam(':meta_key', $key);
   $query->execute();
}

Решение 2

На основании структуры таблицы я вижу, что выиспользуете WordPress.И пытается обновить таблицу wp_usermeta.Для обновления wp_usermeta вы можете использовать update_user_meta.

<?php
foreach($meta as $key => $value) {
    update_user_meta( $user_id, $key, $value );
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...