Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wordpress update mysql table

I am writing a plugin for Wordpress, which should check if a mysql entry already exists.
If it does not exist Wordpress should insert the entry into the table. This part works as I expected.
However, if there already is an entry in the mysql table, Wordpress should update the table, but this does not work.

The code I am using for this is the following code:

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

The variables I use in this query are correct, because they are successfully used to insert into the table, but somewhere along the way something goes wrong with the updating function.

Can somebody please tell me what I am doing wrong here?
What is the right way to go about this?

like image 453
Gabi Barrientos Avatar asked Dec 18 '12 15:12

Gabi Barrientos


People also ask

How do I UPDATE my WordPress version of MySQL?

Step 2: Navigate to Software > MySQL Upgrade or type “MySQL” into the search bar. You may also find it under SQL Services > MySQL/MariaDB Upgrade. Step 3: Select the version of MySQL you want to upgrade to and click Next. Now follow the upgrade steps, and it'll take care of everything for you.


3 Answers

the value of column time must be enclosed with single quote

$wpdb->query($wpdb->prepare("UPDATE $table_name SET time='$current_timestamp' WHERE userid=$userid"));
like image 27
John Woo Avatar answered Oct 31 '22 14:10

John Woo


$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();

The above solution is what worked for me because using the $wpbd->query($wpbd->prepare()) statement didn't work even when passing in the correct number and string formats.
The purpose of the var_dump() function is to see where the execution of the query went wrong. It prints out the query and values being passed. Of course using the $wpdb->flush() function clears the cache for the next query to execute.

like image 191
Marcus Avatar answered Oct 31 '22 15:10

Marcus


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');
like image 2
Savan Dholu Avatar answered Oct 31 '22 13:10

Savan Dholu