magento从app / etc / local.xml读取mysql连接信息并直接连接

时间:2014-11-04 01:09:54

标签: magento

我需要从10,000个产品说明中删除img标签。

我知道它是使用Magento模型的基本规则,但是可以安全地选择所有属性值并更新它们。

我尝试使用Mage::getSingleton('core/resource')定义http://fishpig.co.uk/magento/tutorials/direct-sql-queries/,但在通过CLI运行时遇到了分段错误。

如何在local.xml中使用连接信息直接转到MySQL?

2 个答案:

答案 0 :(得分:0)

//my file is in /xyz subfolder, if yours is on magento root remove the ../ below

define("_MAGENTO_ROOT",dirname(__FILE__)."/../");

$file = _MAGENTO_ROOT . "app/etc/local.xml"; 

$xml = simplexml_load_file($file);

$host = $xml->global->resources->default_setup->connection->host;
$username = $xml->global->resources->default_setup->connection->username;
$password = $xml->global->resources->default_setup->connection->password;
$dbname = $xml->global->resources->default_setup->connection->dbname;

mysql_connect($host, $username, $password) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());

$query = "select value, value_id from catalog_product_entity_text where attribute_id = 72 order by value_id asc #limit 100";

$descriptions = mysql_query($query) or die(mysql_error());

while ($description = mysql_fetch_assoc($descriptions)) 
{ 
//update and save back to db 
}

这对我来说很快

答案 1 :(得分:0)

你不需要这么多的手动mysql连接编码。只需添加Mage.php文件即可。这已经足够了。像这样,

   <?php

require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app();
$read = Mage::getSingleton('core/resource')->getConnection('core_read');


$result=$read->query("select value, value_id from catalog_product_entity_text where attribute_id = 72 order by value_id asc #limit 100");
$row = $result->fetchAll();

echo '<pre>';
print_r($row);

如果您想更新某些内容,则必须获得写入权限。为此,你必须包括这个,

$write = Mage::getSingleton('core/resource')->getConnection('core_write');

那就是它。如果您有任何疑问,请在此处发表评论。