在MYSQL中识别变量

在MYSQL中识别变量,mysql,magento,Mysql,Magento,我正在尝试在我的magento数据库上运行以下代码: UPDATE catalog_product_entity_media_gallery AS mg, catalog_product_entity_media_gallery_value AS mgv, catalog_product_entity_varchar AS ev SET ev.value = mg.value WHERE mg.value_id = mgv.value_id AND mg.ent

我正在尝试在我的magento数据库上运行以下代码:

    UPDATE catalog_product_entity_media_gallery AS mg,
    catalog_product_entity_media_gallery_value AS mgv,
    catalog_product_entity_varchar AS ev
SET ev.value = mg.value
WHERE  mg.value_id = mgv.value_id
    AND mg.entity_id = ev.entity_id
    AND ev.attribute_ID = '76'
    AND mgv.position = 1;
在运行此程序之前,我需要识别ev.attribute_ID='76',每个安装的76都是不同的

我需要使用什么来发现我的特定安装中的号码


我正在尝试更新我的magento存储中的图像,以批量显示。

您可以通过编程方式更新图像。 读一下马吕斯的回答:

在Magento中使用直接sql查询不是一个好主意…

您需要了解属性的实体类型代码和属性代码,才能获得特定安装的正确属性id

如果您已经知道这些代码,则可以使用类似的内容,例如:

$entity_type_code = 'catalog_product';
$attribute_code = 'name';
$attributeId = Mage::getSingleton('eav/config')
    ->getAttribute($entity_type_code, $attribute_code)
    ->getId();
如何识别属性id的代码 如果您只有一个属性_id,但不知道从何处/如何获取该代码,则以下方法:

如果检查catalog_product_entity_varchar的表定义,您会发现attribute_id是一个外键,它引用了eav_attribute.attribute_id

因此,请检查eav.attribute表以查找属性_id==76的记录

找到的记录确实包含您要查找的常规属性\u代码值

如果您确定所有特定安装的实体类型id都是相同的,那么您甚至不需要获取实体类型代码,可以在此处停止。只需将找到的记录的实体类型id作为第一个参数传递给上面的getAttributecall

如果实体类型id在特定安装中不同,则仍然需要获取实体类型代码

获取找到的记录的entity_type_id的值,并在eav_entity_type表中搜索此entity_type_id entity_type_id是引用eav_entity_type.entity_type_id的外键。找到的记录包含对所有安装有效的常规entity_type_代码的值

话虽如此,出于卑诗省的原因,我总是建议尽可能使用Magento方法