как избежать одинарных и двойных кавычек в резервной копии mysql (.sql файл), которая берется с помощью mysqldump

#php #mysql

#php #mysql

Вопрос:

Я хочу делать ежедневную резервную копию своей базы данных, для этого я использую следующий код

 $username =escapeshellcmd($dbuser);
$password =escapeshellcmd($dbpwd);
$hostname =escapeshellcmd($server);
$database =escapeshellcmd($dbname);

$backupFile='/mypath/dbBackup/'.date("Y-m-d-H-i-s").'.sql';
$command = "mysqldump -u$username -p$password -h$hostname $database > $backupFile";
system($command, $result);
  

Я помещаю этот код в файл php и вызываю этот файл через задание cron, которое я настроил на ежедневное резервное копирование базы данных. Это работает нормально, но проблема в том, что мой столбец в таблице содержит содержимое, состоящее из нескольких одинарных и двойных кавычек. Из-за этого при создании резервной копии (.SQL-файл) он содержит неработающий запрос ВСТАВКИ, подобный этому

 INSERT INTO `mytable` VALUES (1,'don't read this article','test'ssdf','',1,5,6,0),(2,'goal setting tips you'd want to try','Category- ' ....
  

Итак, есть ли какой-либо способ избежать этих одинарных и двойных кавычек в файле резервной копии .SQL при использовании mysqldump.

Комментарии:

1. Этот запрос не выглядит сломанным для меня…

2. Напротив, обратная косая черта прерывает запрос. Они экранируют кавычки.

3. В качестве альтернативы используйте mysqldump --xml , если синтаксис SQL вас смущает. (Этот комментарий предназначен для недоумения. На самом деле это не совет.)

Ответ №1:

Вам не нужно ничего экранировать в файле резервной копии MySQL.

Комментарии:

1. Спасибо за ответ, но когда я делаю резервную копию вручную с помощью phpmyadmin-> Экспорт, резервная копия содержит двойные одинарные кавычки, что означает, что там, где присутствует одинарная кавычка, добавляется дополнительная одинарная кавычка. Почему это добавлено. Я в замешательстве.

2. существует несколько способов заключения в кавычки. вы можете заключить одинарную кавычку либо с обратной косой чертой, либо в ту же самую цитату. почему phpmyadmin предпочитает один метод другому, я не знаю. но в любом случае это не имеет большого значения