0

したがって、次のコードを使用して 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 つの単一引用符に置き換え''られます。

本当に違いはありますか?数値以外のフィールドをエスケープする方法を見て、より良い方法があるかどうか教えてください。

4

1 に答える 1