如何使用触发器转义 mysql 上的字符串?
How do I escape string on mysql using triggers?
我需要在另一个 table 上存储查询并备份它们,它工作正常,直到一些双引号 ("
) 或单引号 ('
) 出现在列值中所以当我做备份时,它弄乱了查询。
我在 mysql
上创建了触发器前插入
BEGIN
SET @col_names_str = 'option_id , option_name , option_value , autoload';
SET @col_vals_str = CONCAT('"', NEW.option_id, '"', ',', '"', NEW.option_name, '"', ',', '"', NEW.option_value, '"', ',', '"', NEW.autoload, '"');
SET @cur_query = CONCAT('INSERT INTO `wp_options` ', '(', @col_names_str, ')', ' VALUES ', '(', @col_vals_str, ')', ';');
INSERT INTO wp_query_recorder (id, query, table_name) VALUES (NULL, @cur_query, 'wp_options');
END
我想在插入另一个列之前转义该列的值 table。
例如这样的数据
"O:8:"stdClass":1:{s:12:"last_checked";i:1519369979;}"
至此
'O:8:\"stdClass\":1:{s:12:\"last_checked\";i:1519369919;}'
类似这样的事情esc_sql(NEW.option_value)
,这可以吗?
我认为您正在寻找 QUOTE() 函数。
我需要在另一个 table 上存储查询并备份它们,它工作正常,直到一些双引号 ("
) 或单引号 ('
) 出现在列值中所以当我做备份时,它弄乱了查询。
我在 mysql
上创建了触发器前插入BEGIN
SET @col_names_str = 'option_id , option_name , option_value , autoload';
SET @col_vals_str = CONCAT('"', NEW.option_id, '"', ',', '"', NEW.option_name, '"', ',', '"', NEW.option_value, '"', ',', '"', NEW.autoload, '"');
SET @cur_query = CONCAT('INSERT INTO `wp_options` ', '(', @col_names_str, ')', ' VALUES ', '(', @col_vals_str, ')', ';');
INSERT INTO wp_query_recorder (id, query, table_name) VALUES (NULL, @cur_query, 'wp_options');
END
我想在插入另一个列之前转义该列的值 table。
例如这样的数据
"O:8:"stdClass":1:{s:12:"last_checked";i:1519369979;}"
至此
'O:8:\"stdClass\":1:{s:12:\"last_checked\";i:1519369919;}'
类似这样的事情esc_sql(NEW.option_value)
,这可以吗?
我认为您正在寻找 QUOTE() 函数。