$wpdb->update has 32 bit limit ?
-
HI,
I had trouble with my wp-database when updating values using
$wpdb->update
. It seems that there is a limit for 32 bit values somewhere, since it works without problems when I use$wp->insert
.So I wrote a small test:
Create a table, insert a big value, retrieve it again (this works), update the value and retrieve it again (result is always -1 for positive values, or -2147483648 for negative values).<?php global $wpdb; $table_name = $wpdb->prefix . "_test_db"; $sql = "CREATE TABLE " . $table_name . " ( id bigint(20) NOT NULL AUTO_INCREMENT, value bigint(20) NOT NULL, PRIMARY KEY id (id) ) CHARSET utf8 ENGINE=INNODB;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); $value = 5000000000; $n_rows = $wpdb->insert( $table_name, array('value' => $value)); $id = $wpdb->insert_id; error_log($n_rows . " row inserted, id=[" . $id . "] value=[" . $value . "]"); // 1 row inserted, id=[1] value=[5000000000] $row = $wpdb->get_row( "SELECT * FROM " . $table_name, ARRAY_A); error_log("read from DB: id=[" . $row["id"] . "] value=[" . $row["value"] . "]"); // read from DB: id=[1] value=[5000000000] $n_rows = $wpdb->update( $table_name, array('value' => $value), array('id' => $id), array('%d'), array( '%d' ) ); error_log($n_rows . " row updated, id=[" . $id . "] value=[" . $value . "]"); // 1 row updated, id=[1] value=[5000000000] $row = $wpdb->get_row( "SELECT * FROM " . $table_name, ARRAY_A); error_log("read from DB: id=[" . $row["id"] . "] value=[" . $row["value"] . "]"); // read from DB: id=[1] value=[-1] $wpdb->query("DROP TABLE " . $table_name); ?>
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘$wpdb->update has 32 bit limit ?’ is closed to new replies.