php - 如何更新 php mysql 中的特殊子行

标签 php mysql wordpress

我知道如何使用 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));

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

screenshot

meta_keymeta_value 列的user_id 均为 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
}

最佳答案

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

关于php - 如何更新 php mysql 中的特殊子行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612750/

相关文章:

php - 我在 Android 中将 JSON 对象解析为 String 时出错

php - 访问Laravel数据库时无输出

mysql - 如何正确设计 SQL 查询以实现最佳行输出

php - 如何在 Windows 上安装 Laravel 4 软件包

php - 如何使用 jQuery 在表单上以红色字体显示错误消息?

php - 数据在 MySQL 数据库中保存两次。不知道我做错了什么?

css - 表单上的内联 CSS

php - 如何发送自动电子邮件(优惠券网站)?

php - WordPress 下拉多选选项

php - 通过Solr生成内容关键词