gpt4 book ai didi

php - 使用 php 和 mysql 插入 xml

转载 作者:行者123 更新时间:2023-11-29 16:50:03 26 4
gpt4 key购买 nike

假设您有一个 xml.file,其中包含商店中的 80 种产品。(这将是一个提要,但我不想混淆问题)

这 80 种产品有很多元素,例如

    <product> 
<price> millions </price>
<colour> red </colour>
<pictures> <pic> picture1_url </pic> <pic> picture2_url </pic>
<pic>picture3_url </pic>
</pictures>
</product >

您的客户希望在网页/应用程序上使用 .xml,他的客户可以使用搜索表单按价格和颜色搜索数据,并查看嵌套在主元素“产品”中的“许多”图片。

我的问题是:我是否应该将数据保存在关系表中,其中每个元素都有列(关系表,因为我认为有很多图片需要外键到产品的 ID。

我已经能够使用 dom/simple_xml 来回显页面上的产品,而不需要数据库,但我有一种挥之不去的感觉,我应该将数据放入数据库中,这样我就可以使用 mysql select 语句更轻松地查询它。

我什至与一位开发人员交谈过,并在 WordPress 元表上看到图片的 url 在一个表中以逗号分隔。我认为这在数据库领域是非常糟糕的做法?

问题是,当我有许多其他图片与该 id 关联时,将外键附加到 1 id 似乎非常困难..(在 foreach/循环产品时,获取最后一个 id 似乎会感到困惑。

这是我的代码,但我认为如果我决定走 dom 路线并且不需要将数据放入数据库中,它就没用。

 $xml = simplexml_load_file('products.xml') or die("can not find it");

foreach($xml->product as $row){


$price = $row->price
$colour =$row->colour
$pictures = $row->pictures

$sql= insert into products table

}

最佳答案

给你

CREATE TABLE products (id INT NOT NULL PRIMARY KEY auto_increment, colour VARCHAR(25), price DECIMAL)

请注意,价格是小数 - 通常的做法是将定价保留为小数

CREATE TABLE pictures (id INT NOT NULL PRIMARY KEY auto_increment, picture_url VARCHAR(100))

CREATE TABLE relations (product_id INT, picture_id INT)

正在插入值...

INSERT INTO products VALUES (NULL, 'red', 100500.00)
INSERT INTO pictures VALUES (NULL, 'picture_url1');
INSERT INTO pictures VALUES (NULL, 'picture_url2');
INSERT INTO pictures VALUES (NULL, 'picture_url3');

添加关系

INSERT INTO relations VALUES (1, 1);
INSERT INTO relations VALUES (1, 2);
INSERT INTO relations VALUES (1, 3);

最后 - 得到结果

SELECT price, colour, group_concat(pictures.picture_url) as 'pictures' FROM products, relations, pictures WHERE products.id = 1 AND
relations.product_id=products.id AND relations.picture_id=pictures.id

------------------------------------------------------
|price |colour|pictures |
------------------------------------------------------
|100500|red |picture_url1,picture_url2,picture_url3|
------------------------------------------------------

更新。使用SimpleXML插入所有图片

$new_xml = new SimpleXMLElement($xml_file);

foreach ($new_xml->product->pictures->pic as $pic) {
//this is your picture url
$your_picture_url = $pic;
}

关于php - 使用 php 和 mysql 插入 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52859088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com