MySQL 准备语句表 3

标签 mysql prepared-statement

我无法使用第 3 个表的联接查询来获取数据。

表 p: - ID - 姓名

表: - 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) 您是否尝试过直接从 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

关于MySQL 准备语句表 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126663/

相关文章:

java - 使用 SAXON java 程序进行转换时,XSLT 无法找到 SQL jar 文件

php - 需要密码才能访问页面

mysql - MS SQL - 遗留 Web 应用程序中的 MySQL 迁移

mysql - mysql使用什么样的哈希?

php - 谁能帮我解决这个问题吗?

java - 列出所有更新的列名

python - cassandra python 驱动程序绑定(bind)到 int

PHP Like 函数与组合代码

sql - 在 Rails 准备语句语法中使用 WHERE IN

PHP - 在 INSERT INTO MySQL 语句中使用变量作为列名的一部分