【问题标题】:how to update a special sub rows in php mysql如何更新 php mysql 中的特殊子行
【发布时间】:2019-06-15 17:43:53
【问题描述】:

我知道如何使用 pdo 更新数据库行。

例如更新 meta_key 行,其中 userid15。我只能做

$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));

这里的更新有点复杂,如下面的截图所示。

user_id 对于 meta_keymeta_value 列都是 15

meta_key 列包含三行 first_name,last_name,description,而对于 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
}

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:
     $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
    使用准备好的语句。 Prepared statement 是一种用于重复执行相同(或相似)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 );
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 2014-09-23
      • 2010-10-12
      • 1970-01-01
      • 2013-03-26
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多