0

データが Web フォームに入力されると、mysql_real_escape_string() を使用して悪いものをエスケープし、PHP を使用して MySQL に保存します。データをリロードする必要がある場合に備えて、バックアップ SQL ファイルを作成するスクリプトをセットアップしました。

問題: 挿入ステートメントの "...Joe\\'s tracking..." などの余分な文字列が原因で、以下のコードが失敗します。mysql のバックアップと復元を自動化するより良い方法はありますか? または、その時点で復元が失敗する原因となっているデータを修正するにはどうすればよいでしょうか?

$mysqli_link = mysqli_connect("localhost","xxxx","xxxxxx","xxxxxxx");

/* check connection */
if (mysqli_connect_errno()) {
   printf("Connect failed: %s\n", mysqli_connect_error());
   exit();
}

$query =".......
LOCK TABLES `tbl_serv_prov` WRITE;
/*!40000 ALTER TABLE `tbl_serv_prov` DISABLE KEYS */;
$select =" INSERT INTO `tbl_serv_prov` VALUES (17,7,'2013-06-15 04:45:22','Joe\\\'s Trucking','----','N')";
/*!40000 ALTER TABLE `tbl_serv_prov` ENABLE KEYS */;
UNLOCK TABLES;......";


/* execute multi query */
if (mysqli_multi_query($mysqli_link, $query)) {
   do {
       /* store first result set */
       if ($result = mysqli_store_result($mysqli_link)) {
           //do nothing since there's nothing to handle
           mysqli_free_result($result);
       }
       /* print divider */
       if (mysqli_more_results($mysqli_link)) {
           //I just kept this since it seems useful
           //try removing and see for yourself
       }
   } while (mysqli_next_result($mysqli_link));
}
4

1 に答える 1

2

MySQLに仕事をさせる方が簡単でしょう...

shell_exec("mysqldump -hHOST -uUSERNAME -pPASSWORD DBNAME TABLE1 TABLE2 TABLE3  > db_backup.sql");

複数のコピーを保持する場合は、ファイル名に日付を設定できます。

編集 (ファイルをロードするため):

shell_exec("mysql -hHOST -uUSERNAME -pPASSWORD DBNAME < filename");
于 2013-09-12T18:20:09.587 に答える