PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; // 创建图片存储目录 $image_dir = 'uploads/goods_images/'; if (!is_dir($image_dir)) { mkdir($image_dir, 0755, true); } // 酒类商品图片URL列表(示例图片) $alcohol_images = [ // 白酒类 [ 'category' => '白酒', 'name' => '五粮液', 'url' => 'https://img.alicdn.com/imgextra/i1/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'wuliangye.jpg' ], [ 'category' => '白酒', 'name' => '茅台', 'url' => 'https://img.alicdn.com/imgextra/i2/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'maotai.jpg' ], [ 'category' => '白酒', 'name' => '剑南春', 'url' => 'https://img.alicdn.com/imgextra/i3/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'jiannanchun.jpg' ], [ 'category' => '白酒', 'name' => '泸州老窖', 'url' => 'https://img.alicdn.com/imgextra/i4/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'luzhoulao.jpg' ], [ 'category' => '白酒', 'name' => '郎酒', 'url' => 'https://img.alicdn.com/imgextra/i5/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'langjiu.jpg' ], // 红酒类 [ 'category' => '红酒', 'name' => '干红葡萄酒', 'url' => 'https://img.alicdn.com/imgextra/i6/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'red_wine_1.jpg' ], [ 'category' => '红酒', 'name' => '赤霞珠红酒', 'url' => 'https://img.alicdn.com/imgextra/i7/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'red_wine_2.jpg' ], [ 'category' => '红酒', 'name' => '梅洛红酒', 'url' => 'https://img.alicdn.com/imgextra/i8/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'red_wine_3.jpg' ], [ 'category' => '红酒', 'name' => '黑皮诺红酒', 'url' => 'https://img.alicdn.com/imgextra/i9/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'red_wine_4.jpg' ], [ 'category' => '红酒', 'name' => '西拉红酒', 'url' => 'https://img.alicdn.com/imgextra/i10/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'red_wine_5.jpg' ], // 啤酒类 [ 'category' => '啤酒', 'name' => '青岛啤酒', 'url' => 'https://img.alicdn.com/imgextra/i11/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'qingdao_beer.jpg' ], [ 'category' => '啤酒', 'name' => '雪花啤酒', 'url' => 'https://img.alicdn.com/imgextra/i12/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'snow_beer.jpg' ], [ 'category' => '啤酒', 'name' => '燕京啤酒', 'url' => 'https://img.alicdn.com/imgextra/i13/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'yanjing_beer.jpg' ], [ 'category' => '啤酒', 'name' => '哈尔滨啤酒', 'url' => 'https://img.alicdn.com/imgextra/i14/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'harbin_beer.jpg' ], [ 'category' => '啤酒', 'name' => '百威啤酒', 'url' => 'https://img.alicdn.com/imgextra/i15/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'budweiser_beer.jpg' ], // 洋酒类 [ 'category' => '洋酒', 'name' => '威士忌', 'url' => 'https://img.alicdn.com/imgextra/i16/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'whisky.jpg' ], [ 'category' => '洋酒', 'name' => '白兰地', 'url' => 'https://img.alicdn.com/imgextra/i17/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'brandy.jpg' ], [ 'category' => '洋酒', 'name' => '伏特加', 'url' => 'https://img.alicdn.com/imgextra/i18/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'vodka.jpg' ], [ 'category' => '洋酒', 'name' => '朗姆酒', 'url' => 'https://img.alicdn.com/imgextra/i19/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'rum.jpg' ], [ 'category' => '洋酒', 'name' => '金酒', 'url' => 'https://img.alicdn.com/imgextra/i20/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg', 'filename' => 'gin.jpg' ] ]; // 由于网络图片URL可能不可用,我们创建一些占位符图片 // 实际使用时应该替换为真实的图片URL function createPlaceholderImage($filename, $category, $name) { global $image_dir; // 创建一个简单的占位符图片 $width = 300; $height = 300; $image = imagecreate($width, $height); // 根据酒类设置不同的背景色 switch($category) { case '白酒': $bg_color = imagecolorallocate($image, 255, 248, 220); // 米色 $text_color = imagecolorallocate($image, 139, 69, 19); // 棕色 break; case '红酒': $bg_color = imagecolorallocate($image, 128, 0, 32); // 深红色 $text_color = imagecolorallocate($image, 255, 255, 255); // 白色 break; case '啤酒': $bg_color = imagecolorallocate($image, 255, 215, 0); // 金色 $text_color = imagecolorallocate($image, 0, 0, 0); // 黑色 break; case '洋酒': $bg_color = imagecolorallocate($image, 75, 0, 130); // 靛蓝色 $text_color = imagecolorallocate($image, 255, 255, 255); // 白色 break; default: $bg_color = imagecolorallocate($image, 200, 200, 200); // 灰色 $text_color = imagecolorallocate($image, 0, 0, 0); // 黑色 } imagefill($image, 0, 0, $bg_color); // 添加文字 $font_size = 5; $text_x = ($width - strlen($name) * imagefontwidth($font_size)) / 2; $text_y = ($height - imagefontheight($font_size)) / 2; imagestring($image, $font_size, $text_x, $text_y, $name, $text_color); // 保存图片 $filepath = $image_dir . $filename; imagejpeg($image, $filepath, 90); imagedestroy($image); return $filepath; } // 下载或创建图片 function downloadImage($url, $filename) { global $image_dir; $filepath = $image_dir . $filename; // 尝试下载图片 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'); $data = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($data && $http_code == 200) { file_put_contents($filepath, $data); return $filepath; } return false; } // 连接数据库 try { $pdo = new PDO($dsn, $username, $password, $options); echo "数据库连接成功\n"; } catch (PDOException $e) { die("数据库连接失败: " . $e->getMessage()); } // 处理每个图片 foreach ($alcohol_images as $item) { echo "处理 {$item['category']} - {$item['name']}...\n"; // 尝试下载图片 $image_path = downloadImage($item['url'], $item['filename']); // 如果下载失败,创建占位符图片 if (!$image_path) { echo "下载失败,创建占位符图片...\n"; $image_path = createPlaceholderImage($item['filename'], $item['category'], $item['name']); } if ($image_path) { // 更新数据库中对应商品的图片字段 $sql = "UPDATE ls_retail_goods SET goods_image = ? WHERE goods_name LIKE ?"; $stmt = $pdo->prepare($sql); $search_name = '%' . $item['name'] . '%'; $result = $stmt->execute([$item['filename'], $search_name]); if ($result && $stmt->rowCount() > 0) { echo "成功更新 {$item['name']} 的图片: {$item['filename']}\n"; } else { echo "未找到匹配的商品: {$item['name']}\n"; } } else { echo "图片处理失败: {$item['name']}\n"; } // 添加延迟避免请求过快 sleep(1); } // 验证结果 echo "\n=== 验证图片更新结果 ===\n"; $sql = "SELECT goods_name, goods_image FROM ls_retail_goods WHERE goods_image IS NOT NULL AND goods_image != '' ORDER BY goods_name"; $stmt = $pdo->query($sql); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "已设置图片的商品数量: " . count($results) . "\n"; foreach ($results as $row) { echo "- {$row['goods_name']}: {$row['goods_image']}\n"; } echo "\n图片下载和数据库更新完成!\n"; ?>