12

私はWordpressのプラグインを書いています。これは、mysqlエントリがすでに存在するかどうかをチェックする必要があります。
存在しない場合、Wordpressはエントリをテーブルに挿入する必要があります。この部分は期待どおりに機能します。
ただし、mysqlテーブルにすでにエントリがある場合、Wordpressはテーブルを更新する必要がありますが、これは機能しません。

これに使用しているコードは次のコードです。

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

このクエリで使用する変数は、テーブルへの挿入に正常に使用されているため正しいですが、途中で更新関数に問題が発生しています。

誰かが私がここで間違っていることを教えてもらえますか?
これについて行く正しい方法は何ですか?

4

5 に答える 5

15

列の値はtimeで囲む必要がありますsingle quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
于 2012-12-18T15:43:58.917 に答える
6
$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()関数を使用すると、次に実行するクエリのためにキャッシュがクリアされます。

于 2014-02-02T11:56:40.830 に答える
2
UPDATE wp_options SET option_value = replace(option_value, 'http://www.example.com', 'http://localhost/test-site') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.example.com', 'http://localhost/test-site');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.example.com','http://localhost/test-site');
于 2016-10-26T08:54:21.573 に答える
0

例:

ユーザー(IDは546)のnicenameをHarde_Bandeに変更します

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

詳細については、http: //codex.wordpress.org/Class_Reference/wpdb#Examplesをご覧ください。

于 2014-02-19T09:25:11.007 に答える
0

非常に簡単に

global $wpdb;

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

var_dump($execut);

「IK_users」はカスタムテーブル名です。「wp_users」のような独自のテーブル名に置き換えてください。

于 2021-09-07T09:22:22.047 に答える