그래서 나는 다음과 같은 코드를 사용하여 내 DB를 백업하고이 위대한 작동하는 것 같군MySQL 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
을 사용하고 있기 때문에 코드가 생깁니다. 그러나 PHPMyAdmin의 결과물에서 '
을 대신 하나의 작은 따옴표 ''
을 한 행으로 대체합니다.
실제로 차이가 있습니까? 제가 숫자가 아닌 필드를 빠져 나가는 길을보고 더 좋은 방법이 있는지 말해주십시오.