私は次のPDOを持っています:
// Connect to PDO / $this->link = PDO
$this->statement = $this->link->prepare("
SELECT p.*, pm.*
FROM dev_permissions p, dev_permissions_menu pm
WHERE pm.id = p.permission_menu_id
AND pm.module = 'account'
AND pm.controller IN('login', '*')
AND pm.action IN('index', '*')
");
// Execute and verify number of rows
から1行を返し$this->statement->rowCount()
ます。
ただし、パラメーターをバインドしようとすると、期待どおりに機能しません。
// Connect to PDO / $this->link = PDO
$this->statement = $this->link->prepare("
SELECT p.*, pm.*
FROM dev_permissions p, dev_permissions_menu pm
WHERE pm.id = p.permission_menu_id
AND pm.module = :module
AND pm.controller IN(:controller, '*')
AND pm.action IN(:action, '*')
",
$this->statement->bindParam(':module', 'account', PDO::PARAM_STR);
$this->statement->bindParam(':controller', 'login', PDO::PARAM_STR);
$this->statement->bindParam(':action', 'index', PDO::PARAM_STR);
// Execute and verify number of rows
ありがとう!
アップデート:
CTRL + C/CTRL + V の問題のため、正しいデータベース プレフィックスを反映するように変更PDO::FETCH_ASSOC
されました。PDO::PARAM_STR
#__
次のコードでテストしました:
$pdo = new \PDO('mysql:dbname=database;host=localhost', 'user', 'password');
$statement = $pdo->prepare("
SELECT p.*, pm.*
FROM dev_permissions p, dev_permissions_menu pm
WHERE pm.id = p.permission_menu_id
AND pm.module = :module
AND pm.controller IN(:controller, '*')
AND pm.action IN(:action, '*')
");
$statement->bindParam(':module', $request['module'], \PDO::PARAM_STR);
$statement->bindParam(':controller', $request['controller'], \PDO::PARAM_STR);
$statement->bindParam(':action', $request['action'], \PDO::PARAM_STR);
$statement->execute();
new \Core\Debug($statement->fetchAll());
そして、すべてが正しく動作します。私は他の方法で問題を見つけることができません..