将数据导出为.sql格式。如何逃脱?

| 我正在编写一个导出工具,将输入的json数据转换为sql语句。 该工具知道(也不应该)知道数据库连接,它应该只输出一个.sql,可以与其他工具一起使用来进行实际导入。 大多数与mysqli-> *和PDO相关的功能都依赖于开放式连接(以确定字符集之类的东西)。什么是解决这个问题的好方法?     
已邀请:
MySQL函数需要连接才能转义字符串的原因是,所有“ 0”所做的就是调用MySQL的内置转义函数。 但是,如果您阅读了手册页,则会发现它们确实列出了转义的字符:   mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符之前:\\ x00,\\ n,\\ r,\\,\',\“和\\ x1a。 您不希望使用ѭ1,因为这样只会转义几个字符,并且不会提供安全的解决方案。但是您应该能够使用给定的字符列表重新实现
mysql_real_escape_string()
的转义,只需调用
strtr()
或类似的字符即可:
$replacements = array(\"\\x00\"=>\'\\x00\',
                      \"\\n\"=>\'\\n\',
                      \"\\r\"=>\'\\r\',
                      \"\\\\\"=>\'\\\\\\\\\',
                      \"\'\"=>\"\\\'\",
                      \'\"\'=>\'\\\"\',
                      \"\\x1a\"=>\'\\x1a\');
$escaped = strtr($unescaped,$replacements);
    
@stefgosselin: mysql_real_escape_string确实需要连接。 我会选择阻力最小的线路。意味着使用系统调用来执行mysqldumper> tmpfile     
只是一个想法,是否有可能为您的应用程序生成和sql之类的
INSERT INTO table1 (id, name) VALUES (?, ?);
并将一组用于SQL的参数传递给数组
$parms = array(\'value1\', \'value2\');
然后让您的应用中执行数据库工作的部分进行转义
function writeToDb($sql, $parms) {
// do escaping here
}
    
为了逃避,“ 8”功能是此任务的常用选择,除非它确实需要连接。另一种选择是ѭ9。 我将检出一个根据需要的参数(字符集,删除表等)定制的mysqldump文件,并从那里开始。     

要回复问题请先登录注册