我正在使用传递到存储过程中的XML
字符串将数据存储到我的数据库中。
一般来说,我使用PDO
来创建准备语句,通过bindParam()
和bindValue()
来避免SQL injection
,然后是execute()
。然而,为了优化我的数据库,我决定实现一个存储过程,它接收大量XML
数据,并一次完成所有的写入。
存储过程将使用迭代器遍历XML并将行插入数据库。
使用使用XPath表示法的ExtractValue
,我可以这样做:
CREATE DEFINER=`$DBU`@`%` PROCEDURE `write_comment_rows`(In xml_string text)
BEGIN
insert into my_table (comment) values (
ExtractValue(xml_string, 'user_data/comment_field')
);
END;
我如何确保XML
中存储在comment_field
中的数据可以安全地放入我的数据库?
我认为这种方法没有优化。基于php的解析,然后在事务中包装一系列准备好的插入,将会非常快。
无论如何,在过程中可以使用内联预处理语句