我使用传递给存储过程的XML
字符串将数据存储到我的数据库中。
通常,我使用PDO
创建预准备语句以避免SQL injection
通过bindParam()
和bindValue()
,然后execute()
。但是,为了优化我的数据库,我决定实现一个存储过程,该过程接收大量XML
数据并一次完成所有写入。
存储过程将使用迭代器来遍历XML并将行插入数据库。
使用ExtractValue
使用XPath表示法,我可以这样做:
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
中的数据可以放入我的数据库?
答案 0 :(得分:1)
我认为这种方法没有优化。基于PHP的解析,以及在事务中包含的一系列准备好的插入,将是非常快速的。
无论如何,程序中可以使用inline prepared statements