我知道如何使用 pdo 更新数据库行。
例如,更新meta_key行,其中userid为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));
这里的更新有点复杂,如下面的屏幕截图所示。
meta_key 和 meta_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/