如何从Magento恢复评论sql

时间:2013-03-23 01:25:06

标签: magento

所以我错误地删除了我们Magento商店的所有评论。有趣的是,当我登录PhpMyAdmin时,我仍然可以看到我所有评论都在的review_detail表,所以我猜它没有从数据库中删除?

现在问题是,如何从数据库中获取这些评论以显示在网站上?我是否会删除review_detail数据库并再次导入它?

谢谢!

2 个答案:

答案 0 :(得分:1)

Magento评论是跨三个不同数据库表的商店。

review表是跟踪每个审阅对象并将其链接到其审阅的对象(即产品)的主表。如果您没有参赛作品,则表示您没有参加评论。

review_detail表是实际包含评论信息的表。

最后,review_store表会跟踪每个Magento商店实例中的评论。 (存储意味着Magento“存储”对象在同一系统中)

我猜你的删除操作是通过review表获得的,而不是其他的。如果是这种情况,您的数据(没有备份)就会消失。如果那里还有数据那么你就会遇到一个不同的,更微妙的问题,而且我不确定那种数据恢复是专家可以走非专家的那种事情。

答案 1 :(得分:1)

基于Alan和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年的某个地方随机生成的。