したがって、次のコードを使用して DB をバックアップしています。
$rows = $this->_getDb()->fetchAll("SELECT * FROM $table");
foreach ($rows AS $row)
{
foreach ($row AS &$value)
{
if (!is_numeric($value))
{
$value = "'".addcslashes($value, "'\\")."'";
$value = str_replace("\n", '\n', $value);
}
}
if (!$count)
{
$output .= "INSERT INTO `$table` (" .implode(', ', $columns). ") VALUES";
}
$count++;
$output .= "\n(" .implode(', ', $row). "),";
if ($count >= $limit)
{
$count = 0;
$output = preg_replace('#,$#', ";\n\n", $output);
}
}
$output = preg_replace('#,$#', ";\n\n", $output);
これはうまく機能しているようです...しかし、出力をPHPMyAdminから得たものと比較していると、いくつかのわずかな違いに気づきました。私のコードでは、 の使用方法によりaddcslashes
、文字列に a が含まれている場合、'
でエスケープされ\'
ます。ただし、PHPMyAdmin からの出力では、'
単一引用符が 2 つの単一引用符に置き換え''
られます。
本当に違いはありますか?数値以外のフィールドをエスケープする方法を見て、より良い方法があるかどうか教えてください。