将图像插入到预先存储数据库


Insert image to prestashop database

我正在制作一个简单的脚本,该脚本将产品直接插入prestashop数据库,但我找不到如何将图像插入数据库。

到目前为止,我的脚本是:

  mysqli_query($conn, 'INSERT INTO ps_product (id_supplier, id_manufacturer, id_category_default, id_shop_default, id_tax_rules_group, on_sale, online_only, quantity, minimal_quantity, price, wholesale_price, out_of_stock, active, redirect_type, available_for_order,  show_price, indexed, visibility, cache_default_attribute, date_add, date_upd, pack_stock_type,ean13,upc,unity,reference,supplier_reference,location) 
VALUES ("2", "2" , "5", "1", "1","1","1", "0", "1", "30", "30", "2", "1", "302","1","1","1","both","19",now(),now(),"3","0","0","","demo_1","","" )');

mysqli_query($conn, 'INSERT INTO ps_product_lang (id_product, id_lang, description, description_short, link_rewrite, name, available_now,meta_description,meta_keywords,meta_title,available_later) 
VALUES (LAST_INSERT_ID(),"1","long des","test","insert title","title inserted","In stock","","","","")');

mysqli_query($conn, 'INSERT INTO ps_product_shop (id_product,id_shop,id_category_default,id_tax_rules_group,price,wholesale_price,unity,active,redirect_type,indexed,cache_default_attribute,date_add,date_upd ) 
VALUES (LAST_INSERT_ID(),"1","5","1","30","30","","1","301","1","1",now(),now())');

现在我必须将照片插入其中,以便我可以完成产品并发布它。

首先,您需要在数据库(表图像)中为图像创建一个新条目。如果您查看Prestashop Image Class,它将图像存储在从您的映像ID创建的目录下。您需要拆分图像 ID 的每个数字才能获取路径。这是Prestashop图像类方法:

/**
 * Returns the path to the folder containing the image in the new filesystem
 *
 * @param mixed $id_image
 * @return string path to folder
 */
public static function getImgFolderStatic($id_image)
{
    if (!is_numeric($id_image)) {
        return false;
    }
    $folders = str_split((string)$id_image);
    return implode('/', $folders).'/';
}

在 defines.inc 中.php _PS_IMG_DIR_定义您的图像文件夹(默认:/img/ ),_PS_PROD_IMG_DIR_定义您的产品图像文件夹(默认:p/ )。 默认情况下,产品图像的文件夹/img/p/

如果图像具有 ID 927 和名称"test.jpg",它将存储在 /img/p/9/2/7/927.jpg

首先尝试一些产品,然后在Prestashop BackOffice中转到Preferences > Images > regenerate thumbnails (at the bottom of the page)。Prestashop应该为您生成每个产品的图像尺寸。

如果它不起作用或需要更多说明,请告诉我。