我有以下的,我不能得到它的工作:PHP PDO(PostgreSQL的):無法獲取多個參數的工作
$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());
上面的代碼給我下面的錯誤:
Message: An exception occurred while executing '(query)': SQLSTATE[08P01]: <>: 7 ERROR: bind message supplies 2 parameters, but prepared statement "" requires 1
我在MySQL中嘗試過,它工作正常。我也嘗試了命名參數,但這也不起作用。
任何人有任何想法?使用PHP版本5.4.6和PostgreSQL 9.1.7。
@Kovge 我有用戶,角色和資源。用戶可以讓資源和角色擁有資源。用戶有一個角色。在表user_resource中有一個字段,表示是否允許用戶訪問資源。角色也是一樣。 我想要一個包含所有資源的表(HTML表),並查看用戶是否被允許訪問資源(先通過user_resource,然後是role_resource)
可能需要加入嗎?或者'foo_allowed'和'bar_allowed'將在行上具有相同的值。 – vikingmaster 2013-04-08 12:48:40
@Jari也許一個連接確實是一個好主意,但對於foo_allowed和bar_allowed,我將這些值從不同的表中獲得,以便它們如何在行上變成相同的值? – 2013-04-08 13:02:32
另外,我在mysql中嘗試了相同的查詢,它工作得很好.. – 2013-04-08 13:03:33