私は次のものを持っていますが、それを機能させることができません:
$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 ユーザー、役割、およびリソースがあります。ユーザーはリソースを持つことができ、ロールはリソースを持つことができます。ユーザーには 1 つの役割があります。テーブル user_resource には、ユーザーがリソースへのアクセスを許可されているかどうかを示すフィールドがあります。役割についても同様です。すべてのリソースを含むテーブル (HTML テーブル) が必要で、ユーザーがリソースへのアクセスを許可されているかどうかを確認します (最初に user_resource を介して、次に role_resource を介して)。