2014-03-02 93 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

相關問題