如何为特定的id更新wpusermeta表


how to update wp_usermeta table for a specific id

我想更新wordpress中wp_usermeta表中的一些元键。我使用了此代码,但找不到解决方案。我试过这个代码。如有任何帮助,将不胜感激

$newname=$_POST['name'];
    $parts = explode(" ", $newname);
    $newlname = array_pop($parts);
    $newfname = implode(" ", $parts);
    echo "Firstname: $newfname'n";
    echo "Lastname: $newlname'n";
    echo $id= $_POST['newid'];
echo $newaddress= $_POST['address'];
echo $newcity=$_POST['city'];
echo $newareacode=$_POST['acode'];

/* Start database connection */
       $dbhost = 'localhost';
       $dbuser = 'user';
       $dbpass = '';
       $conn = mysql_connect($dbhost, $dbuser, $dbpass);
       mysql_select_db('etplpm_network');
/* End  database connection */
 $sql="UPDATE wp_usermeta set 'first_name'=$newfname, 'last_name'=$newlname, 'billing_address_1'=$newaddress, 'billing_city'=$newcity, 'billing_postcode'=$newareacode WHERE 'ID'=$id"; 
     $result = mysql_query( $sql, $conn );
if($result)
{
    echo "Successfully Updated";
}
else
{
    echo "Successfully Not Updated";
}

}

您的MySql语法错误:

UPDATE wp_usermeta set 'first_name'=$newfname, 'last_name'=$newlname, 'billing_address_1'=$newaddress, 'billing_city'=$newcity, 'billing_postcode'=$newareacode WHERE 'ID'=$id;

您必须用引号括起字段值,而不是字段名:

UPDATE wp_usermeta SET first_name = '$newfname', ...

但是此查询也将失败,因为您没有检查wp_usermeta表:

CREATE TABLE `wp_usermeta` (
  `umeta_id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

因此,您必须首先检查特定用户的元是否存在:

SELECT umeta_id FROM wp_usermeta WHERE user_id=$id AND meta_key='first_name'

然后,如果元存在,则更新它:

UPDATE wp_usermeta SET meta_value='$newfname' WHERE umeta_id=...

否则,插入新的:

INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES ('$id', 'first_name', '$newfname')

但是,为什么不使用worpress函数update_user_meta()呢?

update_user_meta( $id, 'first_name',        '$newfname' );
update_user_meta( $id, 'last_name',         '$newlname' );
update_user_meta( $id, 'billing_address_1', '$newaddress' );
update_user_meta( $id, 'billing_city',      '$newcity' );
update_user_meta( $id, 'billing_postcode',  '$newareacode' );