我一直在尝试将车辆信息存储为json,以便更快地访问车辆图像。
我在数据库中为json设置了一个表。json的设置如下所示。所有的车辆都在这个json中,以及它们的所有图像信息。我不确定这是否是存储数据的最佳方式。我想能够快速搜索的基础上的车辆识别号,以获得只有图像与该车辆识别号。
我的问题:
动态显示相关车辆图像的加载速度。
不只是得到相关的图像;其他车辆图像正在显示
不确定我的json格式是否合理(或者效率低下),我没有太多地使用json
有没有更简单的方法来设置查询特定json的sql表?
可能的解决方案(不限于一种):
重新格式化json以进行简单引用
重新格式化表格以便于查询
编辑“代码循环”以加快运行时间
我以前在inventorypage上设置了循环,这是一个动态页面,使用$get获取相关的vin,遍历数据库以获取与vin相关的图像。这是可行的,但由于所需的迭代次数太长。
通常有更多的条目比这个,我修剪它的方式回到更容易阅读。我们平均有100辆车,每辆车有20-60张图像。以下是我的json格式示例:
[{"vin": "JF1GR89658L827860", "images": [{"image":
"https://cdn04.carsforsale.com/3/420970/23594569/1133776572.jpg?
dt=100320180034", "width": 800, "height": 600}, {"image":
"https://cdn04.carsforsale.com/3/420970/23594569/1133776606.jpg?
dt=100320180034", "width": 800, "height": 600}]},
{"vin": "6Y86G433753", "images": [{"image":
"https://cdn04.carsforsale.com/3/420970/23684711/1135715340.jpg?
dt=100620180134", "width": 800, "height": 600}, {"image":
"https://cdn04.carsforsale.com/3/420970/23684711/1135715371.jpg?
dt=100620180134", "width": 800, "height": 600}]}]
我目前必须遍历json并找到相关图像的代码,我认为这些图像错误地显示了来自不同车辆的图像:
foreach ($vehicles as $vehicle)
{
if ($vehicle['vin'] === $vin) {
$last_element = ',';
while ($vehicle['images']) {
echo "{";
echo "src: '" . $vehicle['images'][0]['image'] . "',";
echo "h: " . $vehicle['images'][0]['height'] . ",";
echo "w: " . $vehicle['images'][0]['width'];
echo "}" . $last_element;
}
break;
}
}
上述“代码循环”(用于图像滑块)的预期输出:
{
src: "image_link",
h: vehicle_height,
w: vehicle_width
}
2条答案
按热度按时间fcwjkofz1#
不要试图手工创建json。构造一个包含所有数据的数组,然后调用
json_encode()
.您还可以考虑使用
vin
就像钥匙一样。那你就不需要循环了,你可以用$vehicle[$vin]
. 你也可以用JSON_SEARCH()
在mysql查询中,只提取该元素而不是整个数组。h6my8fg22#
这是一种固执己见的回答,但我真的不认为使用json列有什么好处。我认为您的数据似乎更适合传统的相关表格。我认为json列非常适合存储更多的非结构化数据,即具有不同属性的不同对象集。但是你有一组相似的对象,每个对象都是一个具有完全相同属性的平面列表。图像记录将完全适合自己的表,可能与其他vin相关数据的不同表有关系,我认为这样检索相关数据会更简单、更有效。只有我的两分钱,我知道它并不能直接回答问题,但它有点太多的评论。