WordPress.org

Make WordPress Core

Opened 5 years ago

Closed 5 years ago

#8768 closed defect (bug) (duplicate)

dbDelta() queries fails with the ` char

Reported by: binnyva Owned by:
Milestone: Priority: normal
Severity: normal Version: 2.7
Component: Plugins Keywords:
Focuses: Cc:

Description

If I use the while creating a SQL query in a WP Plugin(if the SQL is created using phpMyAdmin export feature, it will have the quoting), dbDelta will not work. An example...

$sql = "CREATE TABLE `{$wpdb->prefix}eventr_event_attendee` (
		`event_ID` int(11) unsigned NOT NULL,
		`attendee_ID` int(11) unsigned NOT NULL,
		`added_on` datetime NOT NULL,
		`guests` int(2) NOT NULL default '0',
		KEY `event_ID` (`event_ID`,`attendee_ID`)
	);";
dbDelta($sql);

Will not work - but this will...

$sql = "CREATE TABLE {$wpdb->prefix}eventr_event_attendee (
		event_ID int(11) unsigned NOT NULL,
		attendee_ID int(11) unsigned NOT NULL,
		added_on datetime NOT NULL,
		guests int(2) NOT NULL default '0',
		KEY event_ID (event_ID,attendee_ID)
	);";
dbDelta($sql);

The easiest way to fix this is to replace all ` chars with an empty string in the dbDelta() function. But I think it is a bit too 'hacky'. I have created an alternative solution - the patch is attached.

I have tested it with WordPress 2.7 - with one of my plugins.

Attachments (1)

patch.txt (1.2 KB) - added by binnyva 5 years ago.
Patch for wp-admin/includes/upgrade.php

Download all attachments as: .zip

Change History (4)

binnyva5 years ago

Patch for wp-admin/includes/upgrade.php

comment:1 mrmist5 years ago

  • Version set to 2.7

I'm not sure that I get the point. Why not just code the plugin as in example 2 if that already works?...

comment:2 jacobsantos5 years ago

  • Keywords needs-patch needs-unittests added; has-patch removed

I would have to say that the culprit is in the preg_match() and your patch will only mask that issue (while being a huge WTF). More debugging is required.

comment:3 mrmist5 years ago

  • Keywords needs-patch needs-unittests removed
  • Milestone 2.8 deleted
  • Resolution set to duplicate
  • Status changed from new to closed

8014

Note: See TracTickets for help on using tickets.