我有以下内容,但我无法让它工作:
$pdo = new \PDO('pgsql:host=xxxx;port=xxx;dbname=xxx;user=xxx;password=xxx');
$foo = 123;
$bar = 123;
$query = '
SELECT *,
(
SELECT allow
FROM foo
WHERE foo_field = ?
AND lorem.lorem_id = foo.lorem_id
) as foo_allowed, (
SELECT allow
FROM bar
WHERE bar_id = ?
AND lorem.lorem_id = bar.lorem_id
) as bar_allowed
FROM lorem';
$stmt = $pdo->prepare($query);
$stmt->bindValue(1, $foo);
$stmt->bindValue(2, $bar);
$stmt->execute();
var_dump($stmt->fetchAll());
上面的代码给了我以下错误:
消息:执行“(查询)”时发生异常:SQLSTATE [08P01]:<>:7 错误:绑定消息提供 2 个参数,但准备好的语句“”需要 1 个
我在mysql中尝试了同样的方法,效果很好。我也尝试过命名参数,但这也不起作用。
使用 PHP 5.4.6 和 PostgreSQL 9.1.7。
@Kovge 我有用户、角色和资源。用户可以拥有资源,角色可以拥有资源。一个用户只有一个角色。在表 user_resource 中有一个字段表示是否允许用户访问资源。角色也是一样。我想要一个包含所有资源的表(HTML 表),并查看是否允许用户访问资源(首先通过 user_resource,然后是 role_resource)