#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 предпочитает один метод другому, я не знаю. но в любом случае это не имеет большого значения