MySQL Prepared Statement表3

时间:2014-03-02 10:53:46

标签: mysql prepared-statement

我无法使用3Th表的连接查询获取数据。

表p:  - ID   - 姓名

表s:  - ID  - 名称   - 说明

表ps:   - p_id   - s_id

$stmt = $this->conn->prepare("SELECT p.id, p.name FROM p, ps WHERE p.id = 1 AND ps.p_id = 1 AND ps.s_id = 1");

这是错误:在非对象上调用成员函数execute() 感谢

1 个答案:

答案 0 :(得分:0)

两个问题:

(1)您是否尝试过直接从MySQL命令行运行查询?如果是这样,它会给你你想要的结果吗?

(2)你能展示更多的代码吗?也许这个问题位于代码中的其他位置。

首先尝试这个显式的JOIN查询:

SELECT p.id, p.name 
FROM p
JOIN ps
ON p.id = ps.p_id
JOIN s
ON ps.s_id = s.id
WHERE s.id = 1;

示例数据:

CREATE TABLE p 
    (
     id int auto_increment primary key, 
     name varchar(20)
    )ENGINE=InnoDB;

INSERT INTO p
(name)
VALUES
('Bob'),
('Jack'),
('John');

CREATE TABLE s 
    (
     id int auto_increment primary key,
     name varchar(30)
    )ENGINE=InnoDB;

INSERT INTO s
(name)
VALUES
('blablabla'),
('Foo'),
('Foobar');


CREATE TABLE ps 
    (
     id int auto_increment primary key, 
     p_id int,
     s_id int,
     FOREIGN KEY (p_id) REFERENCES p(id),
     FOREIGN KEY (s_id) REFERENCES s(id)
    )ENGINE=InnoDB;

INSERT INTO ps
(p_id,s_id)
VALUES
(1,1),
(1,2),
(2,1),
(2,2),
(3,2);

SQLFiddle demo