2014-03-02 59 views
0

我无法使用3Th表的连接查询来获取数据。MySQL Prepared Statement table 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() Thanks

+0

是什么'mysqli_error()'说的错误是什么? – Barmar

+3

查询中的第三个表在哪里?它只使用2个表格。 – Barmar

+0

怀疑: - 为什么在查询中传递所有值时使用查询做准备? – heretolearn

回答

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

相关问题