因此,我錯誤地刪除了我們的Magento商店的所有評論。有趣的是,當我登錄PhpMyAdmin時,我仍然可以看到review_detail表,我的所有評論都是這樣的,所以我猜它並沒有從數據庫中刪除?如何從Magento恢復評論sql
現在的問題是,如何從數據庫中獲得這些評論以顯示在網站上?我是否會刪除review_detail數據庫並再次導入它?
謝謝!
因此,我錯誤地刪除了我們的Magento商店的所有評論。有趣的是,當我登錄PhpMyAdmin時,我仍然可以看到review_detail表,我的所有評論都是這樣的,所以我猜它並沒有從數據庫中刪除?如何從Magento恢復評論sql
現在的問題是,如何從數據庫中獲得這些評論以顯示在網站上?我是否會刪除review_detail數據庫並再次導入它?
謝謝!
Magento評論是跨越三個不同數據庫表的商店。
review
表是跟蹤每個審閱對象並將其鏈接到其審閱對象(即產品)的主表。如果你沒有在那裏的條目,你沒有審查。
review_detail
表是實際包含評論信息的表格。
最後,review_store
表跟蹤哪些評論屬於每個Magento商店實例。 (存儲意味着Magento「存儲」對象在同一個系統中)
我的猜測是你的刪除操作通過review
得到,但不是其他人。如果是這種情況,你的數據(沒有備份)就沒有了。如果那裏還有數據,那麼你就會遇到一個不同的,更微妙的問題,我不確定這種數據恢復是專家能夠讓非專家走過的事情。
謝謝Alan。你的回答是正確的。我能夠將review_detail錶鏈接到一個個手動查看錶格。從review_table我可以得到review_id和entity_pk_value,然後我在審查表中手動輸入它們。唯一缺少的是撰寫評論的日期,因此別無選擇,只能在收到訂單後20天內檢查此類產品的訂單是否由該客戶提供,並估計客戶提供的評論。幸運的是,我只需要通過97條評論:) – Giri06 2013-03-23 13:11:38
只是爲了闡明您從rating_option_vote表獲得的entity_pk_value,而不是來自review_table – Giri06 2013-03-24 13:54:45
部分評論數據是rating,存儲在rating_option表中 – zainengineer 2014-11-10 06:51:10
小腳本基於Alan's和Giri06的答案來恢復您的評論。
<?php
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA);
$db['host'] = $xml->global->resources->default_setup->connection->host;
$db['name'] = $xml->global->resources->default_setup->connection->dbname;
$db['user'] = $xml->global->resources->default_setup->connection->username;
$db['pass'] = $xml->global->resources->default_setup->connection->password;
$pref = $xml->global->resources->db->table_prefix;
mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error());
mysql_select_db($db['name']) or die(mysql_error());
$result = mysql_query("select `entity_pk_value`,`review_id` from `{$pref}rating_option_vote`") or die(mysql_error());
for ($i=0;$i<mysql_num_rows($result);$i++) {
$row = mysql_fetch_array($result);
$exists = mysql_query("select `entity_pk_value`,`review_id` from `{$pref}review` where `review_id`=".$row['review_id']) or die(mysql_error());
if (!mysql_num_rows($exists)) {
$query = "insert into `{$pref}review`(`entity_pk_value`,`review_id`,`entity_id`,`status_id`,`created_at`) values({$row['entity_pk_value']},{$row['review_id']},1,1,from_unixtime(unix_timestamp('2013-01-01 01:00:00')+floor(rand()*31536000)))";
echo "Inserting {$row['review_id']}<br>";
mysql_query($query) or die(mysql_error());
}
}
日期或評論是隨機產生的地方在2013年
你能提供你如何小心(使用SQL,更改Magento的xml..etc)刪除它更詳細? – 2013-03-23 01:31:09
我不小心通過管理區刪除它。正在努力清除一些垃圾評論,並點擊「全部檢查」按鈕,所有消失。在我去MyPhp後,可以看到他們仍然在review_detail表下。 – Giri06 2013-03-23 01:53:41