我正在编写一个将输入的 json 数据转换为 sql 语句的导出工具。
这个工具是(而且不应该)知道数据库连接,它应该只是输出一个可以与其他工具一起使用的 .sql 来进行实际导入。
大多数 mysqli->* 和 PDO 相关的函数都依赖于一个开放的连接(以确定诸如字符集之类的东西)。解决这个问题的好方法是什么?
最佳答案
MySQL 函数需要连接才能转义字符串的原因是所有 mysql_real_escape_string()
所做的是调用 MySQL 的内置转义函数。
但是,如果您阅读 the manual page for it ,你会看到他们确实列出了转义的字符:
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.
您不想使用 addslashes()
,因为它只会转义几个字符,并且不会提供安全的解决方案。但是您应该能够使用给定的字符列表重新实现 mysql_real_escape_string()
完成的转义,只需调用 strtr()
。或类似的:
$replacements = array("\x00"=>'\x00',
"\n"=>'\n',
"\r"=>'\r',
"\\"=>'\\\\',
"'"=>"\'",
'"'=>'\"',
"\x1a"=>'\x1a');
$escaped = strtr($unescaped,$replacements);
关于php - 将数据导出为 .sql 格式。如何逃脱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5696355/