programing

Wordpress 업데이트 mysql 테이블

css3 2023. 3. 16. 21:41

Wordpress 업데이트 mysql 테이블

워드프레스용 플러그인을 쓰고 있는데 mysql 엔트리가 이미 존재하는지 확인해야 합니다.
존재하지 않는 경우 Wordpress는 엔트리를 테이블에 삽입해야 합니다.이 부분은 예상대로 동작합니다.
단, mysql 테이블에 엔트리가 이미 있는 경우 Wordpress는 테이블을 갱신해야 하지만 이 작업은 작동하지 않습니다.

여기에 사용하는 코드는 다음과 같습니다.

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time=$current_timestamp WHERE userid=$userid"));

이 쿼리에서 사용하는 변수는 테이블에 삽입하는 데 성공했기 때문에 정확하지만 업데이트 기능에 문제가 있습니다.

내가 여기서 뭘 잘못하고 있는지 누가 좀 말해줄래?
어떻게 하면 좋을까요?

열의 값time로 둘러싸야 한다.single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
$result = $wpdb->update('westend_areaofficers', array('officerOrder' => $memberOrder,
'officerTitle' => $memberTitle, 'officerName' => $memberName, 'officerPhone' => 
 $memberPhone), array('officerId' => $memberId), array('%d','%s', '%s', '%s'),
 array('%d'));

if($result > 0){
echo "Successfully Updated";
}
else{
  exit( var_dump( $wpdb->last_query ) );
}
$wpdb->flush();

위의 솔루션은 올바른 숫자와 문자열 형식을 전달해도 $wpbd->query($wpbd->prepare()) 문을 사용할 수 없었기 때문에 효과가 있었습니다.
var_dump() 함수의 목적은 쿼리 실행이 잘못된 위치를 확인하는 것입니다.전달되는 쿼리와 값을 출력합니다.물론 $wpdb->flush() 함수를 사용하면 다음 쿼리를 실행할 캐시가 지워집니다.

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.example.com','http://localhost/test-site');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

예:

사용자의 닉네임(ID가 546)을 Harde_Bande로 변경합니다.

$execute = $wpdb->query
( $wpdb->prepare
("
UPDATE $wpdb->users 
SET user_nickname = %d 
WHERE ID = %s
",
"Harde_Bande",
546 
)
);
var_dump( $execute );

상세한 것에 대하여는, http://codex.wordpress.org/Class_Reference/wpdb#Examples 를 참조해 주세요.

아주 간단하게

global $wpdb;

$execute = $wpdb->query
("
UPDATE `IK_users` 
SET `user_nicename` = 'amit' 
WHERE `IK_users`.`ID` = 19
");

var_dump($execute);

'IK_users'는 사용자 지정 테이블 이름입니다. 'wp_users'와 같은 사용자 지정 테이블 이름으로 대체합니다.

언급URL : https://stackoverflow.com/questions/13936448/wordpress-update-mysql-table