Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL结果到多维数组(SQL到标记文件)_Php_Sql_Multidimensional Array_Markdown - Fatal编程技术网

Php SQL结果到多维数组(SQL到标记文件)

Php SQL结果到多维数组(SQL到标记文件),php,sql,multidimensional-array,markdown,Php,Sql,Multidimensional Array,Markdown,我正在尝试将数据从MySQL数据库(带有关系列)传输到标记文件(PicoCMS)。为此,我创建了以下SQL查询以获取数据: SELECT DISTINCT rqypj_mt_links.link_name, rqypj_mt_links.link_desc, rqypj_mt_links.address, rqypj_mt_links.city, rqypj_mt_links.state, rqypj_mt_links.country, rqypj_mt_links.postcode, rqy

我正在尝试将数据从MySQL数据库(带有关系列)传输到标记文件(PicoCMS)。为此,我创建了以下SQL查询以获取数据:

SELECT DISTINCT 
rqypj_mt_links.link_name,
rqypj_mt_links.link_desc,
rqypj_mt_links.address,
rqypj_mt_links.city,
rqypj_mt_links.state,
rqypj_mt_links.country,
rqypj_mt_links.postcode,
rqypj_mt_links.telephone,
rqypj_mt_links.fax,
rqypj_mt_links.email,
rqypj_mt_links.website,
rqypj_mt_links.price,
rqypj_mt_links.lat,
rqypj_mt_links.lng,
rqypj_mt_links.zoom,
rqypj_mt_cats.cat_name,
rqypj_mt_images.filename,
rqypj_mt_cfvalues.value,
rqypj_mt_customfields.caption
FROM rqypj_mt_links
LEFT JOIN rqypj_mt_cl
ON rqypj_mt_links.link_id = rqypj_mt_cl.link_id
LEFT JOIN rqypj_mt_cats
ON rqypj_mt_cl.cat_id = rqypj_mt_cats.cat_id
LEFT JOIN rqypj_mt_images
ON rqypj_mt_links.link_id = rqypj_mt_images.link_id
LEFT JOIN rqypj_mt_cfvalues
ON rqypj_mt_links.link_id = rqypj_mt_cfvalues.link_id
LEFT JOIN rqypj_mt_customfields
ON rqypj_mt_cfvalues.link_id = rqypj_mt_customfields.cf_id
ORDER BY rqypj_mt_links.link_id, rqypj_mt_cl.cat_id
LIMIT 100
这将导致以下结果

标题|描述|地址|猫|等

但是当一个标题有多个cat时,我会得到多个数据相同的行,只有cat行的差异。因此,我正在寻找将SQL数据传输到PHP数组的最佳方法。F.e.:

$result['title']
$result['desc']
$result['cats'][0]
$result['cats'][1]
Etc.

我想这样写降价文件就容易多了。希望有人能给我一些关于最佳方法的建议和一些PHP技巧/脚本

提前谢谢!
Jelte

我想你想做一些类似的事情,同样你可以使用

看看这个。也许它会帮助你:-)

模式

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |
查询

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |
结果

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |
从中生成一个PHP数组 从这里,可以将逗号分隔的字符串转换为数组:

var_dump( explode( ',', $result['cats'] ) );
这将给你:

array(2)
(
    [0] => string(8) "Garfield"
    [1] => string(6) "Nermal"
)

我认为你想做一些类似的事情,同样你可以使用

看看这个。也许它会帮助你:-)

模式

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |
查询

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |
结果

CREATE TABLE link
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE cat
(
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255),
  PRIMARY KEY (id)
);

CREATE TABLE has_cat
(
  `link_id` INT,
  `cat_id` INT,
  FOREIGN KEY (link_id) REFERENCES link(id),
  FOREIGN KEY (cat_id) REFERENCES cat(id)
);
INSERT INTO link (`name`)
VALUES
    ('John'),
    ('Calvin')
;

INSERT INTO cat (`name`)
VALUES
    ('Garfield'),
    ('Nermal'),
    ('Hobbes')
;

INSERT INTO has_cat (link_id, cat_id)
VALUES
  (1, 1),
  (1, 2),
  (2, 3)
;
SELECT link.name AS link, GROUP_CONCAT(cat.name) AS cats
FROM link, has_cat, cat
WHERE
  link.id = has_cat.link_id AND
  cat.id = has_cat.cat_id
GROUP BY link.name
|   link |            cats |
|--------|-----------------|
| Calvin |          Hobbes |
|   John | Garfield,Nermal |
从中生成一个PHP数组 从这里,可以将逗号分隔的字符串转换为数组:

var_dump( explode( ',', $result['cats'] ) );
这将给你:

array(2)
(
    [0] => string(8) "Garfield"
    [1] => string(6) "Nermal"
)

“我想这样写降价文件会更容易。”也许,也许不是。降价文件需要什么格式?我知道,但数据库包含所有信息(40000行)。所以我需要迁移。标记文件是用每行一个项目构建的。标题| desc | cat 1 | cat 2“我想这样写标记文件会更容易”的可能重复项。可能,可能不是。降价文件需要什么格式?我知道,但数据库包含所有信息(40000行)。所以我需要迁移。标记文件是用每行一个项目构建的。标题|说明|第1类|第2类