Sample Header Ad - 728x90

Value of prepared statement is listed as error in query string

0 votes
2 answers
365 views
I have made a Wordpress plugin that writes some data to a proprietary table. The query as shown in the log is: INSERT INTO berichten_devices (device_UUID, article_id) VALUES (%s, %s) If I take this line and enter it manually via adminer in the database, replacing the first %s with 'test' and the second %s with 1: INSERT INTO berichten_devices (device_UUID, article_id) VALUES ('test', 1) The this is stored in the database without a problem. There is also another table that is written to from the plugin which works fine. The php that is responsible for storing the data is as follows: function insert_artice_read($uuid, $article_id) { error_log('$uuid:'.$uuid, 0); error_log('$article_id:'.$article_id, 0); $query = "INSERT INTO berichten_devices (device_UUID, article_id) VALUES (%s, %s)"; error_log('$query', 0); error_log($query, 0); $query = $this->wpdb->prepare($uuid, $article_id); return $this->wpdb->query($query); } The parameter $this->wpdb is defined as $this->wpdb = $wpdb; The logging that is shown is this: dcr-wordpress | [Tue Jun 25 10:45:03.363771 2019] [php7:notice] [pid 1953] [client 192.168.224.1:43584] $uuid:ABCDEF01-2345-6789-ABCD-9876543210AA dcr-wordpress | [Tue Jun 25 10:45:03.363776 2019] [php7:notice] [pid 1953] [client 192.168.224.1:43584] $article_id:1 dcr-wordpress | [Tue Jun 25 10:45:03.363781 2019] [php7:notice] [pid 1953] [client 192.168.224.1:43584] $query dcr-wordpress | [Tue Jun 25 10:45:03.363785 2019] [php7:notice] [pid 1953] [client 192.168.224.1:43584] INSERT INTO berichten_devices (device_UUID, article_id) VALUES (%s, %s) dcr-wordpress | [Tue Jun 25 10:45:03.364844 2019] [php7:notice] [pid 1953] [client 192.168.224.1:43584] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ABCDEF01-2345-6789-ABCD-9876543210AA' at line 1 bij query ABCDEF01-2345-6789-ABCD-9876543210AA gemaakt door require('wp-blog-header.php'), wp, WP->main, WP->parse_request, do_action_ref_array('parse_request'), WP_Hook->do_action, WP_Hook->apply_filters, rest_api_loaded, WP_REST_Server->serve_request, WP_REST_Server->dispatch, Prop\\Inc\\Core\\RestController->article_retrieved, Prop\\Inc\\Common\\Repository->insert_artice_read dcr-wordpress | 192.168.224.1 - - [25/Jun/2019:10:45:03 +0000] "POST /wp/wp-json/prop/v1/berichten-devices HTTP/1.1" 200 802 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148" From this logging it is obvious that there is something wrong with the sql syntax, but this line seems weird to me: for the right syntax to use near 'ABCDEF01-2345-6789-ABCD-9876543210AA' This is data from the prepared statement parameters, I would expect to see something like for the right syntax to use near %s I tried to use %i instead of %s for the second parameter, just be sure, but there was no difference. This is the table definition: CREATE TABLE IF NOT EXISTS berichten_devices ( device_UUID VARCHAR(255) NOT NULL, article_id int(10) NOT NULL, date timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4), KEY dev_uuid (device_UUID) My question is basically: "What am I doing wrong?"
Asked by Tjeerd (25 rep)
Jun 25, 2019, 11:11 AM
Last activity: May 6, 2025, 11:05 PM