ユーザーテーブルに保存されているデータを更新しようとしています。
クエリを使用してこのフィールドデータを更新する方法を提案するか、他のアプローチに従う必要がありますか?
$old_user_id = 123;
$new_user_id = 456;
$account_old = user_load($old_user_id);
$account_new = user_load($new_user_id);
if ($account_old && $account_new && !empty($account_old->data['uc_stripe_customer_id'])) {
user_save($account_new, array('data' => array('uc_stripe_customer_id' => $account_old->data['uc_stripe_customer_id'])));
}
ありがとう!
これは良い方法だと思います。データの現在の内容に応じて、それを新しいデータとマージすることができます。それが重要でない場合は簡単に削除できます。
<?php
$old_user_id = 123;
$new_user_id = 456;
$account_old = user_load($old_user_id);
$account_new = user_load($new_user_id);
// Check to make sure accounts are loaded.
if (empty($account_old) == FALSE && empty($account_new) == FALSE) {
// make sure account data is populated before trying to act on it.
if(empty($account_old->data) == FALSE) {
// unserialize the blob from the user object.
$account_new_data = unserialize($account_old->data);
// make sure the key exists. maybe other checks.
if(array_key_exists('uc_stripe_customer_id', $account_new_data) == TRUE) {
// merge any existing data with the new data.
$account_new->data = array_merge($account_new, account_new_data);
user_save($account_new);
}
}
}
私の控えめな意見では、これをSQLで解析しようとするのはおかしいでしょう。
PHP to unserialize
を使用して変更を加え、serialize
を再度実行して、結果をデータベースに書き込みます。