how to include a semicolon in sql query VALUES?

I have this php script that generate an sql query. However, it needs a semicolon inside the sql statement and because of that, the sql query doesn’t work.

VALUES ('Installed Modules', 'MODULE_BOXES_INSTALLED', 'bm_shopping_cart.php;bm_categories.php', 'This is automatically updated. No need to edit.', '6', '0', now())

It is included in this function.

Read More
function insert_configuration6_table($table_name9, $type) {
    global $wpdb;

    if (!empty ($wpdb->charset))
        $charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";
    if (!empty ($wpdb->collate))
        $charset_collate .= " COLLATE {$wpdb->collate}";

$sql = "INSERT INTO {$table_name9} (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) VALUES ('Installed Modules', 'MODULE_BOXES_INSTALLED', 'bm_shopping_cart.php;bm_categories.php', 'This is automatically updated. No need to edit.', '6', '0', now()),('Installed Template Block Groups', 'TEMPLATE_BLOCK_GROUPS', 'boxes', 'This is automatically updated. No need to edit.', '6', '0', now());";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}

I have searched a lot for this however, I can’t find a solution that work.

How can I make an sql query that includes a semicolon(;) in the values?

Thanks.

Related posts

Leave a Reply

2 comments

  1. The SQL Statement/syntax seems wrong. You should only have one bracket set for Values, instead you have two separated by comma. Shouldn’t it be as follows?

    $sql = "INSERT INTO {$table_name9} (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) VALUES ('Installed Modules', 'MODULE_BOXES_INSTALLED', 'bm_shopping_cart.php;bm_categories.php', 'This is automatically updated. No need to edit.', '6', '0', now());";
    

    Never mind, that was incorrect. I also think that there shouldn’t be any problem with a semicolon in a SQL query; what’s the actual error that you are getting?

  2. As I landed here from Google, I’ll add my solution even if this is very old question.

    For a simple way of using semicolons or whatever other special characters in php sql query one can encode the string.

    In php encode string first

    base64_encode($value)
    

    Then in the query use for example

    UPDATE ... SET value = FROM_BASE64({$value}) ...
    

    The reverse would be to use base64_dedode and TO_BASE64()